K D*_*awG 0 python python-import
假设我有一个名为module1以下的模块:
def main():
print 'K DawG'
main()
Run Code Online (Sandbox Code Playgroud)
和module2只有这一行:
import module1
Run Code Online (Sandbox Code Playgroud)
基本上什么情况是,当我运行module1它不会打印K DawG预期,当我运行moudle2,除非我明确指出module1.main()它不应该做任何事情,但它也打印K DawG
为什么会这样?python是否运行导入期间导入的脚本?如果是这样,我怎么能阻止这种情况发生?
是的,当然脚本在导入时执行.除非使用不同的编程语言,否则你无法改变这一事实.
解决方案通常是这样的:
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这样它只有在你使用python whatever.py而不是在导入它时才会执行.
要更详细地了解导入期间发生的情况:
如果模块已经存在sys.modules,则返回该条目.否则执行模块的代码,并将该文件中的全局变量存储在sys.modules条目中.因此,只有第一次导入模块时,才会执行其代码.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |