Python中的__name__


当你直接运行一个 Python 文件时,无论该文件导入了多少其他的模块,__name__ 的值仍然是 "__main__"。这是因为 __name__ 的值是由 Python 解释器根据脚本的运行方式来设定的,而不是由脚本内部的导入语句决定的。

先总结

  • 一个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 module_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)

main.py 在另一个脚本中被调用

如果 main.py 被另一个脚本导入,那么 main.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 started
Hello, Alice! (From module_a)
Hello, Bob! (From module_b)

总结

因此,无论你在 main.py 中导入了多少其他的模块,只要你是直接运行 main.py,它的 __name__ 就会是 "__main__"if __name__ == "__main__": 里的代码就会被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值