我遇到了这行代码,if __name__ is not None and "." in __name__:
,它包含在ANTLR中的一些自动生成的文件中,例如ExprParser.py
# Generated from Expr.g by ANTLR 4.7.2
from antlr4 import *
if __name__ is not None and "." in __name__:
from .ExprParser import ExprParser
else:
from ExprParser import ExprParser
从我听到的__name__
是由python自动设置的,所以它怎么可能是None
和__name__
只能由模块名称或字符串"__main__"
组成,所以它怎么可能包含点(.)。那么,这行代码不是不必要的,还是我遗漏了什么?
怎么会是
None
据我所知,在正常情况下(即在程序员干扰__name__
的值之外)没有办法结束None
,因此检查确实看起来是多余的。
只能由模块名或字符串
"__main__"
组成,所以它怎么可能包含点(.)
嵌套模块的名称包含点,所以它正在检查它是否是一个嵌套模块。