Featured image of post Python中的  if __name__ == '__main__':

Python中的 if __name__ == '__main__':

一、Python 脚本中的 if __name__ == '__main__':

在Python中,每个文件都可以被看作是一个模块,当直接运行这个文件时,Python解释器会将 __name__ 这个特殊变量设置为 '__main__'。这意味着,如果在这个文件中有一个 if __name__ == '__main__': 检查语句块,那么该语句块中的代码将仅在该文件作为主程序运行时执行。当该文件作为模块被其它python文件引用(import)时,if __name__ == '__main__': 语句块不会被执行或引用。

使用 if __name__ == '__main__': 可以提供一种灵活性,使得代码既可以作为独立的程序运行,也可以作为模块被其它程序导入而不执行if __name__ == '__main__':代码块。这对于测试、重用代码以及写库是非常有用的。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# user.py

class User:
    def __init__(this, name):
        this.name=name

def worker():
    print("Worker is running...")

if __name__ == '__main__':
    u=User('Mubei')
    print(u.name)

    worker()

上述示例代码中,当直接运行 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代码,让它既能独立运行,也能被作为有用的工具和功能被其他程序所利用。

Licensed under CC BY-NC-SA 4.0