Python __name__ 与 __main__

经常会看到这样的 Python 代码

python 复制代码
if __name__ == "__main__":
    main() 
  • 在 Python 中,namemain 是两个与模块和脚本执行相关的特殊变量
  • namemain 通常用于控制代码的执行方式,尤其是在模块既可以作为独立脚本运行,也可以被其他模块导入时

name 变量

  • 内置变量,用于表示当前模块的名称
  • name 的值取决于模块是如何被使用的

当模块作为主程序运行时:name 的值被设置为 "main"

当模块被导入时:name 的值被设置为模块的文件名(不包括 .py 扩展名)

假设有一个 module.py 文件

python 复制代码
print(f"模块的 __name__ 值: {__name__}")

输出是 模块的 name 值: main

main 的含义

  • 特殊的字符串,用于表示当前模块是作为主程序运行的
  • main 通常name 变量一起使用,以确定模块是被导入还是作为独立脚本运行

使用 if name == "main": 的常见模式

常见的做法是在模块的末尾添加以下代码块

python 复制代码
if __name__ == "__main__":
    # 这里的代码只有在模块作为主程序运行时才会执行
    main()

这种模式允许模块在被导入时不会执行某些代码,而只有在作为独立脚本运行时才会执行这些代码

实例

假设有一个名为 example.py 的模块

python 复制代码
def greet():
    print("来自 example 模块的问候!")

if __name__ == "__main__":
    print("该脚本正在直接运行。")
    greet()
else:
    print("该脚本作为模块被导入。")

输出是

该脚本正在直接运行。
来自 example 模块的问候!

这种情况下,name 的值是 "main",所以 if name == "main": 块中的代码会被执行

导入 example.py

如果在另一个脚本中导入 example.py

python 复制代码
# another_script.py

import example

example.greet()

输出

该脚本作为模块被导入。
来自 example 模块的问候!

这种情况下,name 的值是 "example"(模块名),所以 if name == "main": 块中的代码不会被执行

总结

  • __name__内置变量 ,表示当前模块的名称

  • 当模块作为主程序运行__name__ 的值是 "__main__"

  • 模块被导入__name__ 的值是模块的文件名

  • 使用 if __name__ == "__main__": 可以控制模块在被导入时不会执行某些代码,而只有在作为独立脚本运行时才会执行这些代码


    ++内容借鉴于菜鸟教程,感谢++ Python namemain | 菜鸟教程https://www.runoob.com/python3/python3-name-main.html

相关推荐
唐装鼠1 分钟前
Rust Turbofish 语法详解(deepseek)
开发语言·后端·rust
吃喝不愁霸王餐APP开发者4 分钟前
Java应用对接美团开放平台API时的HTTPS双向认证与证书管理实践
java·开发语言·https
宠..5 分钟前
QButtonGroup
java·服务器·开发语言·前端·数据库·c++·qt
superman超哥6 分钟前
仓颉代码内联策略深度解析
c语言·开发语言·c++·python·仓颉
写代码的【黑咖啡】10 分钟前
Python中的文件操作详解
java·前端·python
q_302381955611 分钟前
秒级筛查+94.7%精准!华为Atlas 200 DK边缘设备解锁糖尿病视网膜病变检测新范式
人工智能·python·深度学习·智能体
我命由我1234515 分钟前
JavaScript WebGL - WebGL 引入(获取绘图上下文、获取最大支持纹理尺寸)
开发语言·前端·javascript·学习·ecmascript·学习方法·webgl
AndrewHZ19 分钟前
【python与生活】从手机定位到车辆导航:GPS定位算法原理与Python实现
python·智能手机·生活·gps·定位算法·北斗卫星·车辆导航
凌冰_19 分钟前
Thymeleaf 访问域对象
java·开发语言
想唱rap23 分钟前
哈希(C++)
服务器·开发语言·c++·算法·哈希算法