Python 中 if __name__ == '__main__' 有什么玄机 ?

liftword7个月前 (12-13)技术文章95

Python 以其简单性和可读性而闻名,但是它包含了一小段代码 :if name == 'main': 经常让新手感到困惑。

理解name 属性

为了理解 if name == 'main': 的重要性,我们首先需要理解 name 在 Python 中的含义。Python 中的每个模块都有一个名为 name 的内置属性。当模块作为主程序运行时,name 的值被设置为 main,否则 name 的值将被设置为模块的名称。这种区别对于理解这个条件语句所支持的功能至关重要。

为什么需要 ifname == 'main': ?

if name == 'main': 的主要用途是控制代码的执行。当您编写 Python 脚本时,您可能希望在脚本直接执行时运行某些代码,而不是在将其作为模块导入另一个脚本时运行。这就是 if name == 'main': 发挥作用的地方。它允许您区分这两种场景,为您的 Python 文件启用双重用例:作为可重用模块或作为独立脚本。

Use Cases and Benefits

Reusable Code

通过封装应该只在脚本直接在该条件中执行时才运行的代码,您可以将脚本作为模块重用。其他脚本可以导入函数、类或变量,而无需执行脚本级代码。

Testing and Debugging

这种模式对于测试非常有用。您可以在脚本中包含测试代码,以便在脚本直接执行时运行测试。这意味着您可以在同一个文件中测试模块功能,使测试与代码保持接近。

Script Entry Points :

对于较大的应用程序或包,if name == 'main': 可以作为一个明确的入口点。对于其他开发人员来说,在哪里找到脚本的主要逻辑或哪一部分代码开始执行是非常清楚的。

Practical Example:

让我们通过一个实际的例子来理解它们的区别。

创建一个名为 script.py 的简单 Python 脚本。

def greet(name):
    print(f"Hello, {name}!")

greet("Alice")

if __name__ == "__main__":
    print("The script is run directly")

当我们直接使用 python script.py 运行 script.py 时,输出将是

Hello, Alice!
The script is run directly

现在,让我们将 script.py 导入到另一个名为 main.py 的 Python 脚本中

import script

当我们使用 python main.py 运行 main.py 时,输出将是

Hello, Alice!

我的开源项目

  • course-tencent-cloud(酷瓜云课堂 - gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 - github 仓库)

相关文章

教你Python字典的妙用,消除繁琐的if判断

根据不同的条件进行不同的计算或操作,是很常见的需求。Python 有 if 语句可以实现。但是一旦分支很多,多个 if 就是使你眼花缭乱。我们有许多技巧(套路)来简化这一过程。 我会一连几篇文章,从简...

「Python条件结构」if…elif…else根据输入x的值求y的值(1)

功能要求有一个函数:y = x (x < 1)y = 2x – 1 (1 ≤ x ≤ 10)y = 3x – 11 (x ≥10)写一个控制台应用程序,从键盘上输入x,根据上面的函数计算并输出y...