import与exec执行文件的异同
Posted qinfei88
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了import与exec执行文件的异同相关的知识,希望对你有一定的参考价值。
1. import导入方式为2种,1)import 模块名 2)from 模块 import 变量或函数。
这两者的区别是前者的引用需要用“模块名.函数名或变量名”的方式引用,且模块中有与当前文件同名的对象时,不会覆盖当前文件中的对象。
另一个值得注意的地方是,import导入的函数的名称空间仍然在原来的模块中。比如,当前环境中和被导入模块都存在一个变量x, 即使在当前环境中修改了X,此时执行被导入模块中的函数B,B中使用了X,此时发现B中的X的值仍然是修改之前的X。
1 ##test_0.py 2 x=99 3 def show_0(): 4 print(x) 5 6 ##test_1.py 7 from test0 import * 8 9 def show_1(): 10 print(x) 11 12 x=1 13 show_0() 14 show_1()
此时执行的结果如下:
99
1
这个比较奇特,所以import导入文件并不简单地合二为一,各自还是存在自己的作用域。
2. exec执行其他文件。
exec和import在功能上还是有较大区别,exec是执行整个文件,而无法选择其中的函数。而import在导入时“附带地”执行最外层的代码,其主要作用还是执行其中的函数。在都执行最外层代码的情况下,这两种方法的区别是exec像是将代码合二为一,会影响当前环境的变量。import执行文件时,如果是“import 模块名“的形式,则不会影响其中的变量;如果是“from 模块名 import 变量”,则会影响。但如前面所说,并不是合而为一。
以上是关于import与exec执行文件的异同的主要内容,如果未能解决你的问题,请参考以下文章
static{}(静态代码块)与{}(非静态代码块)的异同点(转自 べ袽猓柯苡づ)