[英]How does python know what __name__ should be?
从命令行运行脚本,该脚本的__name__
属性将为'__main__'
。 但是从另一个位置import
该脚本时,该模块的__name__
属性将是脚本的名称。
python如何知道__name__
的值是什么? 脚本可以告诉它正在导入,并相应地设置__name__
属性吗?
问: python如何知道
__name__
的值是多少?
好吧,如果您编写import foo
Python将查找名为'foo'的模块并将其名称设置为'foo'。
问:一个模块可以告诉它正在导入吗,...
是的,它可以。 通常,人们使用if __name__ == '__main__'
执行此操作-如果测试通过,则通常表示模块正在执行;如果测试失败,则通常表示正在导入。
如果您有一个名为__main__
(在名为__main__.py
的文件中),则该测试将失败的一个特殊情况。
如果您想更加确定100%,可以检查框架并查看模块是否在堆栈的顶部:
f = sys._getframe()
if f.f_back is None:
# We're at the top of the stack: this module is being executed.
else:
# There's a frame on top of us: this module has been imported.
问: ...并相应地设置
__name__
属性?
是的,您可以通过简单设置将__name__
更改为__name__
内容:
__name__ = 'bar'
尽管没有理由这样做,但除了引起混乱并可能引入错误外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.