为了说明我遇到的问题,请考虑以下问题.我有两个.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)
为什么要调用打印功能?它不是我导入的功能的一部分!
我的印象是导入函数只会导入该函数.
你错了.
第一次导入模块时,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)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |