一、Python 脚本中的 if __name__ == '__main__':
在Python中,每个文件都可以被看作是一个模块,当直接运行这个文件时,Python解释器会将 __name__
这个特殊变量设置为 '__main__'
。这意味着,如果在这个文件中有一个 if __name__ == '__main__':
检查语句块,那么该语句块中的代码将仅在该文件作为主程序运行时执行。当该文件作为模块被其它python文件引用(import)时,if __name__ == '__main__':
语句块不会被执行或引用。
使用 if __name__ == '__main__':
可以提供一种灵活性,使得代码既可以作为独立的程序运行,也可以作为模块被其它程序导入而不执行if __name__ == '__main__':
代码块。这对于测试、重用代码以及写库是非常有用的。
示例:
|
|
上述示例代码中,当直接运行 user.py 时,会输出用户名 及 “Worker is running…"。而如果从另一个脚本中导入user.py,则不会立即看到任何输出,但你仍然可以调用 User() 类 或 worker() 函数。if __name__ == '__main__':
不会被导入。
二、Python 脚本中的 if __name__ == '__main__':
最佳实践
- 测试代码:将测试代码放在
if __name__ == '__main__':
块中,可以避免它们在模块被导入时执行。 - 提高代码的复用性:通过分离模块的执行入口和可复用的函数或类,使得代码更加模块化,更易于维护和复用。
- 编写脚本和库:当希望Python文件既能作为脚本直接执行,也能作为库被其它Python文件导入时,使用这种方式来区分运行环境非常有用。
通过 if __name__ == '__main__':
机制,Python为程序员提供了极大的灵活性和便利,使得我们可以轻松地管理代码的运行方式。帮助我们组织和分发Python代码,让它既能独立运行,也能被作为有用的工具和功能被其他程序所利用。