千家信息网

如何理解Python的 __name__ 变量

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"如何理解Python的 __name__ 变量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2026年11月02日如何理解Python的 __name__ 变量

本篇内容介绍了"如何理解Python的 __name__ 变量"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

大家应该已经在很多 Python 脚本里见到过 name 变量了吧?它经常是以类似这样的方式出现在我们的程序里:

if __name__ ==  __main__ :      main()

今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。

这个 __name__ 拿来做什么的?

作为 Python 的内置变量,__name__ 变量(前后各有两个下划线)还是挺特殊的。它是每个 Python 模块必备的属性,但它的值取决于你是如何执行这段代码的。

在许多情况下,你的代码不可能全部都放在同一个文件里,或者你在这个文件里写的函数,在其他地方也可以用到。为了更高效地重用这些代码,你需要在 Python 程序中导入来自其他文件的代码。

所以,在 __name__ 变量的帮助下,你可以判断出这时代码是被直接运行,还是被导入到其他程序中去了。

这个__name__ 变量可能取什么值?

当你直接执行一段脚本的时候,这段脚本的 __name__变量等于 __main__,当这段脚本被导入其他程序的时候,__name__ 变量等于脚本本身的名字。

下面,让我举两个栗子来说明一下:

情况 1 - 直接运行脚本

假设我们有一个nameScript.py,代码如下:

def myFunction():      print( 变量 __name__ 的值是   + __name__)  def main():      myFunction()  if __name__ ==  __main__ :      main()

当你直接执行 nameScript.py 时,流程是这样处理的:

在所有其他代码执行之前,__name__变量就被设置为 __main__ 了。在此之后,通过执行 def 语句,函数 main() 和 myFunction() 的本体被载入。

接着,因为这个 if 语句后面的表达式为真 true,函数 main() 就被调用了。而 main() 函数又调用了myFunction(),打印出变量的值__main__。

情况 2 - 从其他脚本里导入

如果你需要在其他脚本里重用这个 myFunction() 函数,比如在 importingScript.py 里,我们可以将 nameScript.py 作为一个模组导入。

假设 importingScript.py 的内容如下:

import nameScript as ns  ns.myFunction()

这时,我们就有了两个不同的作用域:一个是 importingScript 的,一个是 nameScript 的。让我画个示意图,你就能看出这和之前的区别了:

在 importingScript.py 里,__name__ 变量就被设置为 __main__。当导入 nameScript 的时候,Python 就在本地和环境变量 PATH 指向的路径中寻找对应名称的 .py 文件,找到之后,将会运行导入的文件中的代码。

但这一次,在导入的时候,它自身的 __name__变量就被设置为了 nameScript ,接下来还是一样,函数 main() 和 myFunction() 的本体被载入。然而,这一次 if 语句后面的表达式结果为假 false,所以 main() 函数没有被调用。

导入完毕之后,回到 importingScript.py 中。现在 nameScript 模块中的函数定义已经被导入到当前的作用域中,于是我们通过 ns.myFunction() 的方式调用模块中的函数,这个函数返回的是模块内的变量的值 nameScript 。

如果你试着在 importingScript 中打印 name__ 变量的值,那当你直接执行 importingScript 的时候,它也会输出 __main 。原因在于,这个变量是在 importingScript 的作用域中的。

"如何理解Python的 __name__ 变量"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

变量 函数 代码 脚本 文件 时候 情况 模块 程序 两个 作用 内容 语句 还是 运行 接下来 方式 更多 本体 模组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技名片 深圳九邦互联网科技有限公司 国智互联网科技 互联网通讯科技 关于新基建和互联网科技 致骋互联网科技 互联网科技的英文 狮子座互联网科技有限公司 互联网科技股有哪些 上海电发互联网科技有限公司 剑昆互联网络科技有限公司临桂 厦门千工互联网科技有限公司 乌苏新华互联网科技做什么的 深圳市罗太互联网科技有限公司 威龙国际互联网科技公司 世界互联网领先科技成果获奖 云鲸互联网络科技有限公司 互联网科技机房 广西科技产业互联网是什么 重庆科技产业互联网有哪些 南京欣网互联网络科技有限公司 山东特亿宝互联网科技有限公司 科技制造互联网公司 朗涯互联网科技 广州善班互联网科技 中国最先进互联网科技公司 互联网金融科技公司的优势 卡尔迅互联网科技有限公司 扫呗互联网科技有限公司 上海旺乐尼互联网科技有限公司
0