我是新来的,并不是100%肯定如何提出这个问题所以我只是潜入。我是否应该在我编写的每个函数的开头使用import语句导入所有各种模块/我需要该函数范围的函数?即。
def func1()
import os.path
print func(2)
do something with os.path
def func2()
import os.path
do something with os.path
这是否会增加内存开销或其他开销,还是导入语句只是将本地名称映射到已加载的对象?有没有更好的方法来做到这一点? (链接到教程等最受欢迎。我一直在寻找一段时间,但无法找到一个好的答案。)
答案 0 :(得分:10)
Usually所有导入都放在文件的开头。在函数体中导入模块只会import
该范围内的模块:
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
答案 1 :(得分:6)
该模块仅在第一次导入时处理;后续导入只会复制对本地范围的引用。但是,如果可能的话,最好在模块顶部导入;有关详细信息,请参阅PEP 8.