繁体   English   中英

运行模块时如何使 __name__ == '__main__'

[英]How to make __name__ == '__main__' when running module

更具体地说,我有一个文件

文件file1.py:

if __name__ == '__main__':
    a = 1

从文件file2.py,我想做类似的事情

import file1
print file1.a

无需修改 file1.py

import imp
m = imp.find_module('file1')
file1 = imp.load_module('__main__', *m)

话虽如此,您应该真正考虑修改file1.py而不是使用此 hack。

from runpy import run_module
data = run_module("file1", run_name="__main__")
print data["a"]

您不再需要弄乱导入内部来做这样的事情(并且作为额外的好处,您将避免阻止访问您的真实__main__模块名称空间)

你不能; 这首先是主要哨兵的目的。 如果在主标记中定义的变量在它之外是有用的,那么它们应该首先在它之外定义。

您需要在if __name__ == '__main__' scope 之外声明a 目前,它只存在于该if块的 scope 中。

a = 0
if __name__ == '__main__':
    a = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM