Python中导入模块/函数的作用域
我刚来这里,不太确定怎么问这个问题,所以我就直接说了。请问我在写每个函数的时候,是否应该在开头使用导入语句,把我需要的各种模块或函数都导入进来?比如:
def func1()
import os.path
print func(2)
do something with os.path
def func2()
import os.path
do something with os.path
这样做会增加内存开销或者其他开销吗?还是说导入语句只是把一个本地名称和已经加载的对象关联起来?有没有更好的方法来做这个?(如果有教程链接什么的就太好了。我找了很久,但一直找不到好的答案。)
2 个回答
10
通常情况下,所有的导入语句都放在文件的开头。在一个函数内部导入模块的话,这个模块只在这个函数的范围内有效:
def f():
import sys
print 'f', sys.version_info
def g():
print 'g', sys.version_info
if __name__ == '__main__':
f() # will work
g() # won't work, since sys hasn't been imported into this modules namespace
8
这个模块在第一次被引入时会被处理;之后再引入的时候,只会复制一个指向本地作用域的引用。为了保持代码的整洁,最好在模块的最上面进行引入;具体的细节可以参考PEP 8。