- Python教程
- Python 简介
- Python3 下载安装
- python基础语法
- Python基本数据类型
- Python数据类型转换
- Python解释器
- Python 注释
- Python运算符
- Python数字(Number)
- Python字符串
- Python列表
- Python元组
- Python3 字典
- Python集合
- Python条件控制
- Python循环语句
- Python编程第一步
- Python 推导式
- Python3 迭代器与生成器
- Python函数
- Python lambda(匿名函数)
- Python 装饰器
- Python数据结构
- Python3 模块
- Python __name__ 与 __main__
- Python输入和输出
- Python3 File(文件) 方法
- Python3 OS 文件/目录方法
- Python3 错误和异常
- Python3 面向对象
- Python3 命名空间和作用域
- Python3 标准库概览
平时我们经常会看到这样的 Python 代码:
在 Python 中,__name__ 和 __main__ 是两个与模块和脚本执行相关的特殊变量。
__name__ 和 __main__ 通常用于控制代码的执行方式,尤其是在模块既可以作为独立脚本运行,也可以被其他模块导入时。
1. __name__ 变量
__name__ 是一个内置变量,用于表示当前模块的名称。
__name__ 的值取决于模块是如何被使用的:
当模块作为主程序运行时:__name__ 的值被设置为 "__main__"。
当模块被导入时:__name__ 的值被设置为模块的文件名(不包括 .py 扩展名)。
假设有一个 module.py 文件:
输出会是:
2. __main__ 的含义
__main__ 是一个特殊的字符串,用于表示当前模块是作为主程序运行的。
__main__ 通常与 __name__ 变量一起使用,以确定模块是被导入还是作为独立脚本运行。
3. 使用 if __name__ == "__main__": 的常见模式
在 Python 中,常见的做法是在模块的末尾添加以下代码块:
实例
if __name__ == "__main__":
# 这里的代码只有在模块作为主程序运行时才会执行
main()
这种模式允许模块在被导入时不会执行某些代码,而只有在作为独立脚本运行时才会执行这些代码。
实例
假设我们有一个名为 example.py 的模块:
example.py 文件模块:
def greet(): print("来自 example 模块的问候!") if __name__ == "__main__": print("该脚本正在直接运行。") greet() else: print("该脚本作为模块被导入。")
直接运行 example.py
如果你直接运行 example.py,输出将是:
在这种情况下,__name__ 的值是 "__main__",所以 if __name__ == "__main__": 块中的代码会被执行。
导入 example.py
如果你在另一个脚本中导入 example.py,例如:
实例
# another_script.py import example example.greet()
输出将是:
在这种情况下,__name__ 的值是 "example"(模块名),所以 if __name__ == "__main__": 块中的代码不会被执行。
总结
__name__
是一个内置变量,表示当前模块的名称。当模块作为主程序运行时,
__name__
的值是"__main__"
。当模块被导入时,
__name__
的值是模块的文件名。使用
if __name__ == "__main__":
可以控制模块在被导入时不会执行某些代码,而只有在作为独立脚本运行时才会执行这些代码。