目录
- 先总结
- 当直接运行 main.py
- 当 main.py 在另一个脚本中被调用
- 总结
当你直接运行一个 python 文件时,无论该文件导入了多少其他的模块,__name__
的值仍然是 "__main__"
。这是因为 __name__
的值是由 Pyth编程客栈on 解释器根据脚本的运行方式来设定的,而不是由脚本内部的导入语句决定的。
先总结
- 一个py文件对应一个
__name__
- 文件直接运行时:当一个文件被直接运行时,它的
__name__
是"__main__"
。 - 文件被调用时:当一个文件被其他文件调用时,它的
__name__
是该文件的名字(不带.py
扩展)。
当直接运行 main.py
假设你有以下文件结构:
module_a.py
module_b.py
main.py
当直接运行 main.py
时,main.py
的 __name__
会是 "__main__"
。因此,if __name__ == "__main__":
里的代码会被执行。
# main.py import module_a import moduhttp://www.devze.comle_b def main(): print("Main program started") module_a.greet_a("Alice") module_b编程.greet_b("Bob") if __name__ == "__main__": main()
当你执行 python main.py
时,输出将是:
Main program started
Hello, Alice! (From module_a)Hello, Bob! (From module_b)
当&nbsjsp;main.py 在另一个脚本中被调用
如果 main.py
被另一个脚本导入,那么 mai编程客栈n.py
的 __name__
将是 "main"
(取决于文件名),因此 if __name__ == "__main__":
里的代码不会被执行。
假设你有另一个脚本 runner.py
:
# runner.py import main print("Runner script started") main.main() # 显式调用 main 函数
当你执行 python runner.py
时,输出将是:
Runner script started
Main program startedHello, Alice! (From module_a)Hello, Bob! (From module_b)
总结
因此,无论你在 main.py
中导入了多少其他的模块,只要你是直接运行 main.py
,它的 __name__
就会是 "__main__"
,if __name__ == "__main__":
里的代码就会被执行。
到此这篇关于Python中__name__的具体使用的文章就介绍到这了,更多相关Python __name__内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论