我导入模块的一部分而不是整点,因为我有兴趣加速我的脚本。
我有一个名为theFile.py
的文件def goza():
print vari
funct()
vari = "called variable"
def funct():
print "CALLED FUNCTION"
something_else = 12
我是否在我的主要地方:
from theFile import goza
然后运行goza() 它确实具有可变的vari和函数fuct。 这意味着如果我导入:
from theFile import goza
它实际导入整个模块? 但是唯一容易访问的变量是goza? 如何只导入我预期的部分代码? (如果我从theFile import goza做一些事情并使用goza, 这将是一个错误,表示没有变量和函数功能)。
非常感谢!
答案 0 :(得分:2)
不要担心。
我几乎肯定整个模块被编译成字节码然后读入内存,无论如何。不同的import
语句只与哪些类/函数/变量带入全局范围有关。
所以基本上你什么都不担心。这应该对脚本的性能绝对没有影响。花时间寻找其他地方的改进。
答案 1 :(得分:2)
Python将始终在导入时执行整个文件,然后在执行结束时模块范围内的那些变量是可导入的。
如果您的模块的某些部分只是在作为脚本运行时才执行,而不是在导入时运行,那么成语就是使用:
def main():
code_here
if __name__ == "__main__":
main()
即
def goza():
print vari
funct()
def main():
vari = "called variable"
def funct():
print "CALLED FUNCTION"
something_else = 12
if __name__ == "__main__":
main()