Python 中的 _name_ _main_2024 年 8 月 29 日 | 阅读 3 分钟 在 C 语言家族(C、C++、Java、C# 等)开发的程序中,需要 **main() 函数** 来指定程序的执行入口。 然而,由于 **Python 是一种解释型语言**,并且可以用于交互式 shell,因此它 **没有 main() 方法**。多个语句可以包含在 **.py 扩展名的 Python 程序文件中**。**Python 程序文件的第一个语句** 是执行的开始处。 Python 解释器在执行代码之前会分析源文件并定义一些特殊变量/全局变量。如果该模块(源文件)**被执行为主要应用程序**,Python 解释器会将特殊变量 **__name__** 的值设置为 **"__main__"**。如果同一个文件从另一个模块被引用,**__name__** 将被设置为 **模块的名称**。**__name__ 全局变量** 接受模块名作为值。 包含 **Python 定义和语句的文件** 称为模块。带有 **.py** 扩展名的模块名称成为文件名。 示例输出 Executed Always It is executed when it's invoked directly 解释 **第一层缩进 [块 1] 的整个代码块将被执行**。尽管指定的函数和类都已定义,但**它们的代码实际上都不会执行**。 正如我们在这里遵循的指示。Python 将直接使用 **__main__ 变量**。因此,**if 块 [块 2] 中的代码** 将仅在该模块充当你的**程序入口点**时执行。 因此,通过检查 **__name__ 变量**,你可以确定你的脚本是**手动执行的,还是被另一个程序导入的**。 如果脚本被另一个模块导入,则该模块的**名称将是 __name__。 为什么需要它?通常,当我们想要**直接执行一个函数**时,它就是必需的。例如,**我们正在创建一个脚本**,该脚本将被用作一个模块。 示例 输出 I'm inside this function 使用 __name__ == "__main__" 的优点
为什么设计成这样?自然,我们可能会思考**设计的理由**。好吧,有时我们希望**创建一个 .py 文件**,该文件既可以被**其他程序和/或模块用作模块**,也可以作为**主应用程序本身**。 这种行为有助于我们**更快地测试和改进代码**。由于它允许我们**直接在脚本模式下运行单元测试**,因此也有助于**调试**。 此外,只需设置一个变量就可以**直接启动 Python 模块**,这一点很巧妙。 结论无论你需要一个可以被其他模块导入的文件,还是一个可以作为主程序启动的文件,**__name__ 变量**都有一个特别好的用例。当模块被导入时,我们可以使用 **if __name__ == "__main__"** 块来允许或禁止运行特定代码段。 每当 **Python 解释器读取任何文件**时,**__name__** 变量就会被设置为**导入的**模块的名称,或者在模块被启动时设置为 **__main__**。**读取文件时会执行所有顶层代码**,但**函数和类不会**(因为它们只会被导入)。 通过利用顶层作用域 **__main__** 和特殊变量 **__name__**,**可重用性得到了提高**。Python 脚本文件既可以独立运行,也可以作为模块导入,并且可以从**命令行或终端**运行。 下一主题Python 中的 8 拼图问题 |
最小堆是一种满足堆属性的数据结构,该属性规定每个节点的值小于或等于其子节点。这意味着堆的最小值始终存储在根部。以下是该算法的...
阅读 8 分钟
面向初学者和高级程序员。在本文中,我们将讨论一些适合所有读者的学习 Django 的优秀书籍。我们将探讨它们的特点、书籍写作风格、示例解释、涵盖的主题以及书中定义的项目数量。在探索书籍之前...
阅读 8 分钟
深度学习已被证明是解决图像识别、语音识别和自然语言处理等各个领域复杂问题的有力工具。然而,传统的深度学习模型(如卷积神经网络 (CNN))存在一些局限性。CNN 在检测特征方面表现出色……
阅读 6 分钟
零假设和备择假设是假设检验的两种不同方法。零假设的前提是一个事件(也称为基本事实)。备择假设是与主要假设相悖的推定。想象一个七十多岁的女性,她有...
14 分钟阅读
在本教程中,我们将学习如何在 Python 函数中创建全局变量。全局变量是一种可以在程序的任何部分(包括函数内部)访问的变量。为了确保代码的正常运行,...
11 分钟阅读
在本教程中,我们将讨论在 Python 程序中不使用第三个变量来交换两个变量(n1 和 n2)的不同方法。示例:P: 112 Q: 211 交换 P 和 Q 后:P: 211 Q: 112 方法 1:使用内置方法 内置方法可以处理任何数据类型...
阅读 3 分钟
简介:Python os 模块提供了一种与底层操作系统交互的平台无关方法。它提供了一系列用于处理文件、目录、进程和环境变量等内容的函数和常量。Expanduser():Python 中 os.path 模块的 expanduser() 函数会展开波浪号字符...
阅读 2 分钟
有时在使用Python Shell时,我们得到杂乱无章的输出或编写了不必要的语句,我们希望出于其他原因清除屏幕。"cls"和"clear"命令用于清除终端(终端窗口)。如果您在IDLE中使用Shell,那么...
阅读 2 分钟
本教程重点介绍如何使用 Python 的 Tkinter 创建一个计时器。由于小部件类,我们可以访问许多基本功能。它们提供了用于管理不同用户驱动事件的方法,以及用于定义 GUI 外观的方法,例如放置元素……
阅读 3 分钟
二维码是一种条形码,数字设备可以轻松读取,并以方格状排列的像素字符串的形式携带数据。由于许多智能手机都内置了二维码扫描器,因此二维码经常被使用...
阅读20分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India