本文摘录自知友凌孜侵删
很多时候会在Python中遇见if __name__ == "__main__": 其本意是什么指定Python程序运行的入口,而不执行其下包含的指令。 看下面一个例子 我们编写两个.py 文件
def func():
print("func() in one.py")
print("top-level in one.py")
print("one.py's __name__ is ",__name__)
if __name__ == "__main__":
print("one.py is being run directly")
else:
print("one.py is being imported into another module")
import one
print("top-level in two.py")
print("two.py's __name__ is ",__name__)
one.func()
if __name__ == "__main__":
print("two.py is being run directly")
else:
print("two.py is being imported into another module")
其中第一个one.py 作为一个模块被two.py 调用执行 然后我们运行one.py 查看结果 可以看到,当前的__name__ 就是 __main__ 输出的也是one.py 被直接执行 然后我们运行two.py 查看结果 查看运行结果分析得知:这里的one.py 里的语句输出的是one.py is being imported into another module ,同时__name__ 是one 然而two.py 当前的__name__ 就是 __main__ ,同时two.py 被直接执行
综上:if name == “main”:当直接执行模块时,将执行代码块,而在导入模块时,将不执行代码块。
|