Python 中的 __name__2025年1月13日 | 阅读 5 分钟 Python 中当前正在执行的 Python 脚本或模块的名称存储在 Python 的 `__name__` 特殊变量中。Python 3.0 引入了 `__name__` 变量,而 Python 2.x 版本中没有该变量。当当前 Python 脚本或模块正在运行时,其值 `__main__` 会被赋给 `__name__` 变量。 `__name__` 是什么意思?Python 有一个内置变量 `__name__`,用于存储当前正在执行的脚本或模块的名称。除非当前模块正在运行,否则脚本或模块的名称会存储在 `__name__` 变量中,在这种情况下,`__main__` 会被赋给它。 因此,当一个 Python 脚本被导入到另一个 Python 脚本中时,它的 `__name__` 变量的值应该是 `__main__`。否则,就会显示模块的名称。 示例为了更好地理解这一点,让我们举一个例子。创建一个 **名为 testing.py 的 Python 脚本,** 并将以下代码附加到其中 输出 Value of the __name__ : __main__ 说明 如输出“Value of the name: main”所示,脚本正在立即作为主程序运行。在 Python 中,当脚本被直接执行时,该脚本的 `__name__` 变量的值会自动设置为 `'__main__'`。此输出确认该脚本是直接运行的,而不是作为模块导入到另一个脚本中。 现在,让我们创建另一个名为 **mains.py 的 Python 脚本,** 并将前面的脚本导入其中。 示例输出 Value of the __name__ : testing 说明 当使用 `import testing` 将 `testing.py` 脚本导入到另一个 Python 脚本中时,将运行 `testing. anything()` 方法。在这种情况下,模块的名称(在此例中为“testing”)将被设置为 `testing.py` 中 `__name__` 变量的值,而不是“`__main__`”。因此,`testing. anything()` 的输出为“Value of the `__name__`: testing.”。这说明直接运行脚本与将其作为模块导入对 `__name__` 变量的值有何影响。 使用 `if name == main` 条件我们使用 **if 语句** 和条件 **`__name__ == __main__`** 来声明 **某些 Python 代码** 应该 **仅在直接运行脚本时执行**。 示例在这种情况下,使用字符串 `__main__` 来确定当前模块或脚本是否能够独立运行。为了向 Python 解释器指示 `__name__` 变量中的一个关键字是保留的或特殊的,该术语的两侧都有两个下划线。 Python 中 `name` 的代码示例如前所述,当我们运行一个代码文件时,代码会被直接执行,甚至没有导入到另一个文件中,因此 `__name__` 变量的值会变为 `__main__`。 输出 It is a function in the ScriptP1. Called from the ScriptP1. 说明 如输出“It is a function in the ScriptP1.”后跟“Called from the ScriptP1.”所示,脚本 `ScriptP1` 中定义的 `anything()` 函数正在直接作为主程序运行。当脚本直接在 Python 中运行时,`__name__` 变量被设置为 `'__main__'`;因此,条件 `if __name__=='__main__':` 求值为 True,调用 `anything()` 函数。后面的 print 语句验证了脚本确实是直接运行的。 现在,让我们创建一个名为 `ScriptP2.py` 的新 Python 脚本文件,将 `ScriptP1.py` 导入其中,然后尝试调用 `ScriptP1` 的 `anything()` 方法。 代码: 这里提供了 **ScriptP2.py** 代码 输出 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 说明 提供的 Python 脚本展示了如何将“ScriptP1”模块导入到当前脚本中。方法“anything()”存在于“ScriptP1”中,并在主脚本中被调用。调用此函数,并且脚本输出“Called from the ScriptP2.”以指示函数调用已完成。此事件流程表明“ScriptP1”中定义的方法在当前运行的脚本的上下文中是可访问的并且已成功执行,该脚本被标识为“ScriptP2”。 当 `ScriptP2` 中的 `ScriptP1` 导入语句运行时,`__name__` 变量的值为 `ScriptP1`(模块名称);但是,由于 `ScriptP2` 是第一个运行的脚本,所以它现在的值将是 `__main__`。 打印 `__name__` 的值让我们在执行的每个阶段打印 `__name__` 变量的值,以帮助您更好地理解它。 示例: 以下是 ScriptP1.py Python 脚本的源代码 输出 Value or the variable __name__ : __main__ 说明 提供的 Python 代码示例输出变量 `__name__` 的值,当脚本直接运行时,该值为“main”。这意味着当脚本直接启动时,将运行 `if __name__ == '__main__':` 条件后面的代码块,而不是将其作为模块导入到另一个脚本中。这种行为通常用于区分将脚本作为主应用程序运行和将其作为模块导入到另一个脚本中。 示例 2: 这是 ScriptP2.py 脚本的源代码 输出 Value or the variable __name__ : __main__ 说明 提供的 Python 脚本使用 import 语句导入文件“ScriptP1.py”。当它被执行时,将打印“main”作为变量 `__name__` 的值。这意味着该脚本被直接作为主应用程序执行,而不是被导入到另一个脚本作为模块。在执行 Python 脚本时,这是典型行为;脚本的执行上下文反映在 `__name__` 变量中。 摘要在大多数编程语言中,`main` 方法或函数通常用作执行任何程序的入口点。但 Python 呢?Python 程序(脚本)的执行通常从第 0 行或程序的缩进级别 0 开始。然而,`__name__` 变量的创建发生在 Python 程序运行之前。此变量可用于替换 Python 中的 `main` 方法。 |
根据用户与应用的交互方式对用户进行分类的任务被称为应用用户细分。它有助于定位留存用户,确定营销活动的目标客户群体,并解决涉及搜索的各种其他业务难题...
阅读 15 分钟
命令行参数和解析输入参数是编程和开发的重要方面。命令行参数不过是在程序名称之后在系统命令行中指定的参数。当我们在这些命令行参数中传递值时,这些值会直接传递到...
阅读20分钟
这个基于项目的课程旨在教您如何使用 Python 和广受欢迎的框架 Django 从头开始创建一个内容聚合器。访问多个网站和来源来阅读您喜爱主题的信息可能会非常耗时,因为有...
阅读 22 分钟
在本教程中,我们将了解如何解决获取二叉树的 Z 字形层序遍历的问题。示例:我们有一个像这样的二叉树:Tree: 1 ...
阅读 16 分钟
在本教程中,我们将学习 Python 3.11 的全新激动人心的功能。Python 社区正在努力使 Python 变得更好并提高其性能。现在,他们在新版本中带来了全新且有用的功能和属性...
阅读 3 分钟
基础/先决知识简介:'Pandas'是Python最杰出的库之一。它广泛应用于机器学习和数据分析的不同应用中。使用Pandas,程序员可以创建、读取和操作大量数据,并处理任何文件...
7 分钟阅读
什么是二叉搜索树?二叉搜索树是一种二叉数据结构,包含具有以下几个属性的各种节点:左子树节点小于根节点。右子树节点大于根节点。每个节点的子节点...
阅读 6 分钟
在本教程中,我们将讨论提供一种简单直观的方法来转换图像并理解其背后数据的 Python 库。今天的世界充斥着数据,而图像是这些数据的主要部分。但是为了被利用……
5 分钟阅读
在本教程中,我们将学习 Python 中的 Boruvka 算法。它用于识别最小生成树。捷克数学家 Otakar Boruvka 介绍了这种算法,并因其在图论方面的工作而闻名。这种算法是寻找...
阅读 15 分钟
简介:本文将教我们如何使用 Python 清理回收站。回收站是 Windows 系统上已删除文件和文件夹的临时存储位置。已删除的文档或文件夹被移动到回收站,如果...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India