从另一个.py文件导入函数不仅仅导入该函数?

Dan*_*rry 3 python python-2.7

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

main.py的内容:

from testfunction import mytestfunction

mytestfunction()
Run Code Online (Sandbox Code Playgroud)

testfunction.py的内容:

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

print "Hi"
Run Code Online (Sandbox Code Playgroud)

我的印象是导入函数只会导入该函数.但是,当我运行main.py时,这就是我得到的:

Hi
0
1
2
3
4
5
6
7
8
9
>>> 
Run Code Online (Sandbox Code Playgroud)

为什么要调用打印功能?它不是我导入的功能的一部分!

wim*_*wim 6

我的印象是导入函数只会导入该函数.

你错了.

第一次导入模块时,import语句将执行整个模块,包括任何全局级别的print语句.后续导入的同一模块将重新使用缓存的现有模块sys.modules,这可能是您如何解决整个模块未执行的误解.

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

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

if __name__ == "__main__":
    print "Hi"
Run Code Online (Sandbox Code Playgroud)