首页 > 解决方案 > 从另一个 .py 文件导入函数不仅仅导入该函数?

问题描述

为了说明我遇到的问题,请考虑以下内容。我有两个 .py 文件,一个名为 main.py,另一个名为 testfction.py。它们都在同一个目录中。

main.py 的内容:

from testfunction import mytestfunction

mytestfunction()

testfunction.py的内容:

def mytestfunction():
    for number in range(0,10):
        print number

print "Hi"

我的印象是导入一个函数只会导入那个函数。但是,当我运行 main.py 时,我得到的是:

Hi
0
1
2
3
4
5
6
7
8
9
>>> 

为什么调用 print 函数?它不是我导入的功能的一部分!

标签: pythonpython-2.7

解决方案


我的印象是导入一个函数只会导入那个函数。

你错了。

第一次导入模块时,导入语句将执行整个模块,包括任何全局级别的打印语句。同一模块的后续导入将重新使用缓存中的现有模块sys.modules,这可能是您误会整个模块未执行的原因。

通常,您会发现不打算在导入时执行的代码位于条件内,如下所示:

def mytestfunction():
    for number in range(0,10):
        print number

if __name__ == "__main__":
    print "Hi"

推荐阅读