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执行文件的异同的主要内容,如果未能解决你的问题,请参考以下文章

go语言中os/exec包的学习与使用

static{}(静态代码块)与{}(非静态代码块)的异同点(转自 べ袽猓柯苡づ)

Java与C++&C语言的个人看法----异同点(A)

`from ... import`与`import .` [重复]

Python eval 与 exec 函数

通过同时运行两个可执行文件来测量内存使用情况