当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

#NAME??我来告诉你答案Python 的 __name__ 变量,到底是个什么东西?

#《闪光瞬间》主题随笔第二阶段#

大家应该已经在很多python脚本中看到了__name__变量吧?它经常以这种方式出现在我们的节目中。

If _ _ name _ _==' _ _ main _ _ ' :

缅因市

今天,我将仔细看看这个内置变量的用法,并演示一下如何在你写的python模块中使用。(大卫亚设)。

这个 __name__ 拿来做什么的?

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

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

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

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

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

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

情况 1 - 直接运行脚本

假设我们有一个nameScri,代码如下:

def myFunction():

print('变量 __name__ 的值是 ' + __name__)

def main():

myFunction()

if __name__ == '__main__':

main()

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

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

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

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

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

假设 importingScri 的内容如下:

import nameScript as ns

ns.myFunction()

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

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

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

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

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

总结

今天和大家一起讨论了 __name__ 变量在模组中的特性,分析了不同的调用方式对它的值有什么影响。利用这个特性,你既可以在程序中导入模组来使用,也可以直接把模组本身作为程序来运行。

1.《#NAME??我来告诉你答案Python 的 __name__ 变量,到底是个什么东西?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《#NAME??我来告诉你答案Python 的 __name__ 变量,到底是个什么东西?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2216812.html

上一篇

10306怎么注册不了?我来告诉你答案浙江拟率先为电子商务立法,侵犯消费者信息权最高罚五万

下一篇

03版excel怎么冻结窗口?终于找到答案了Excel技巧|冻结窗格,你还不会用,怪不得经常要看错数据!

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ ' _ _ _ main _ _ _ _ '这样的代码,可能很多新手在python中_...

#NAME?看这里!「Python」__name__ 是什么?

#NAME?看这里!「Python」__name__ 是什么?

#NAME?相关介绍,前言 浏览python文件或直接写python代码时,经常在代码末尾添加这样的代码行。 If _ _ name _ _==' _ _ main _ _ ' : Func_name()那...

【#NAME?】专题超详细的Oracle19c修改数据库用户名教程

【#NAME?】专题超详细的Oracle19c修改数据库用户名教程

#NAME?相关介绍,概述 由于开发了许多视图来指定用户名,因此必须将数据库用户名srmpro修改为SRM。 以下为操作过程.. 1、停止应用 防止修改用户名密码后应用一直在发起错误连接,可事先查询哪个IP在连接数据库,然...

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?专题之浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ ' _ _ _ main _ _ _ _ '这样的代码,可能很多新手在python中_...

关于#NAME?我想说浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

关于#NAME?我想说浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__n...

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ ' _ _ _ main _ _ _ _ '这样的代码,可能很多新手在python中_...

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

【#NAME?】专题浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中_ _ name _ _=\ ' _ _ _ main _ _ \ '这样的代码,可能很多新手在python中_ _; 有...

#NAME?看这里!浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?看这里!浅析python 中__name__ = '__main__' 的作用!容易忽略的问题

#NAME?相关介绍,很多新手刚开始学习python的时候,经常会看到python中的_ _ name _ _ _=_ ' _ _ _ main _ _ _ _ '这样的代码,可能很多新手在python中_...