温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python的__name__变量有什么作用

发布时间:2021-09-10 01:39:13 来源:亿速云 阅读:195 作者:chen 栏目:编程语言

本篇内容主要讲解“Python的__name__变量有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的__name__变量有什么作用”吧!

我知道大家肯定不止一次在Python 脚本里见到过 __name__ 这个变量。它大多是以这样的方式出现在我们的程序里:

if 
__name__ == '__main__':
   main()

我知道你肯定看到过,那么你真正了解__name__吗?

本期Python教程就带大家来好好认识认识这个内置变量,以及这个内置变量的用法,示范一下在你写的 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 时,流程是这样处理的:

Python的__name__变量有什么作用

在所有其他代码执行之前,__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的。让我画个示意图,你就能看出这和之前的区别了:

Python的__name__变量有什么作用

在 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__变量有什么作用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI