2

我导入模块的一部分而不是整个点,因为我有兴趣加速我的脚本。

我有一个名为 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?如何按我的预期只导入部分代码?(如果我执行类似 from theFile import goza 并使用 goza 的操作,那将是一个错误,表明没有变量 vari 和 function funct)。

非常感谢!

4

2 回答 2

2

Python 将始终在导入时执行整个文件,然后在执行结束时模块范围内的那些变量是可导入的。

如果您希望仅在作为脚本运行而不是在导入时执行模块的某些部分,则使用习惯用法:

def main():
    code_here

if __name__ == "__main__":
    main()

IE

def goza():
    print vari
    funct()

def main():
    vari = "called variable"

    def funct():
        print "CALLED FUNCTION"

    something_else = 12

if __name__ == "__main__":
    main()

http://docs.python.org/2/library/ main .html

于 2013-04-27T10:01:55.217 回答
2

别担心。

我几乎肯定整个模块被编译成字节码,然后读入内存,不管怎样。不同的import语句只与将哪些类/函数/变量带入全局范围有关。

所以基本上你什么都不担心。这对脚本性能的影响绝对为零。花时间在别处寻找改进。

于 2013-04-27T09:29:36.067 回答