这是一个Python中常用的惯用语法,主要用于模块化编程和脚本执行控制。
基本含义
这段代码的作用是判断:
-
当前模块是作为主程序直接运行(
__name__
等于'__main__'
) -
还是被其他模块导入使用(
__name__
等于模块名)
为什么要这样写
工作原理
最佳实践
这种写法被认为是Python编程的最佳实践,特别是:
它使得Python模块既能独立运行,又能安全地被其他模块导入使用
-
模块的双重角色:让同一个.py文件可以:
-
作为库模块被导入(此时
if
块内的代码不会执行) -
作为主程序直接运行(此时
if
块内的代码会执行)
-
-
防止意外执行:当模块被导入时,避免自动执行测试代码或示例代码
-
测试隔离:可以将模块的测试代码放在这个条件块中,只在直接运行时执行
实际示例
# mymodule.py def hello(): print("来自mymodule的问候!") if __name__ == '__main__': print("作为主程序运行") hello()
-
直接运行
python mymodule.py
:会调用hello()
函数 -
在其他文件中
import mymodule
:不会自动执行hello()
-
__name__
是Python自动设置的变量:-
直接运行时:
__name__
被设为'__main__'
-
被导入时:
__name__
被设为模块名(如'mymodule')
-
-
编写可复用的库模块时
-
需要包含模块自测试代码时
-
避免模块被导入时自动执行某些操作时