Python的__name__变量是什么?
一、Python的__name__变量是什么
Python的__name__特殊变量存储当前运行的Python脚本或模块的名称。Python __name__变量是在Python 3.0中添加的,在Python 2.x中不存在。当一个Python脚本或模块被执行时,__name__变量被赋值为当前Python脚本或模块的__main__。
1、__name__的意思
Python有一个名为__name__的内置变量,它记录当前运行的模块或脚本的名称。__name__变量仅仅保存模块或脚本的名称,除非当前模块正在执行,在这种情况下__main__值被设置为它。
因此,如果一个Python脚本被导入到另一个Python脚本中,它的__name__变量应该在该Python脚本运行时始终具有__main__值。否则,它将具有模块的名称。
示例:
为了进一步理解这一点,让我们使用一个示例。用Python编写一个名为test.py的脚本,并添加以下代码:
# Code to define a functiondef anything(): print('Value of the __name__ : ', __name__)anything()
输出:
Value of the __name__ : __main__
解释:当我们运行test.py脚本时,__name__变量的值被设置为__main__。
现在,让我们构建另一个名为main.py的Python脚本,并将之前的脚本导入其中。
示例:
# importing testing.pyimport testingtesting.anything()
输出:
Value of the __name__ : testing
因为我们显示了test.py模块的__name__变量的值,所以我们可以从上面代码的输出中看到变量的值是testing。
2、使用if __name__ == __main__条件
我们使用if语句和条件__name__ == __main__来声明某些Python代码只应在直接运行脚本时执行。
示例:
# importing testing.pyimport testingif __name__ == __main__: testing.anything()
这里,字符串main用于确定当前模块或脚本是否独立执行。__name__变量名两边的两个下划线是为了让Python解释器知道这是一个保留的或特殊的关键字。
3、Python中name的代码示例
如前所述,当我们运行一个代码文件时,__name__变量的值会变为__main__,因为代码是直接执行的,甚至不需要导入到另一个文件中。
代码:
# defining a functiondef anything(): print('It is a function in the ScriptP1.')if __name__=='__main__': anything() print('Called from the ScriptP1.')else: print('ScriptP1 is imported into another file.')
输出:
It is a function in the ScriptP1.Called from the ScriptP1.
现在,让我们创建一个名为ScriptP2.py的新Python脚本文件,将ScriptP1.py导入其中,并尝试调用ScriptP1中定义的anything()函数。
代码:
import ScriptP1if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.')
输出:
ScriptP1 is imported into another file.It is a function in the ScriptP1.Called from the ScriptP2.
当在ScriptP2内部运行ScriptP1的import语句时,__name__变量的值为ScriptP1(模块的名称),但由于ScriptP2是名列前茅个执行的脚本,所以现在它的值为__main__。
4、打印name的值
在执行的每个阶段打印__name__变量的值。
代码:
print('Value or the variable __name__ : ' + __name__)
输出:
Value or the variable __name__ : __main__
代码:
# importing the file ScriptP1.pyimport ScriptP1print('Value or the variable __name__ : ' + __name__)
输出:
Value or the variable __name__ : __main__
5、总结
在大多数编程语言中,主方法或函数通常被用作执行任何程序的点。那么Python呢?Python程序(脚本)通常从名列前茅行开始执行,这是程序的缩进级别0。不过,__name__变量会在Python程序执行之前生成。在Python中,这个变量可以用来代替main方法。
二、Python语言
1、简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。2、发展历史
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。
3、特点
易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。易于阅读:Python代码定义的更清晰。易于维护:Python的成功在于它的源代码是相当容易维护的。一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。数据库:Python提供所有主要的商业数据库的接口。GUI编程:Python支持GUI可以创建和移植到许多系统调用。可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得“脚本化”的能力。延伸阅读1:Python常见内置变量
name:表示模块名称或程序入口点。file:表示模块的文件路径。doc:表示模块或函数的文档字符串(docstring)。package:表示模块所在的包。builtins:表示Python内置函数和变量的命名空间。annotations:表示函数或类的注释信息。loader:表示加载当前模块的加载器(loader)。spec:表示模块规范(specification),包括模块文件路径、处理方式、加载器等信息。cached:表示模块被缓存的路径。相关推荐HOT
更多>>mysql的MEMORY引擎为什么没有redis的应用广泛?
一、mysql的MEMORY引擎为什么没有redis的应用广泛从kv缓存的作用看,mysql优点不在kv缓存上,用它做kv缓存维护成本高,redis安装启动使用简单,...详情>>
2023-10-20 18:38:17什么是PWA?
一、什么是PWAPWA是渐进式 Web 应用,运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。。这些应用无处不在、功能丰富...详情>>
2023-10-20 14:02:19软件包“被标记为手动安装”是什么意思?
一、软件包“被标记为手动安装”是什么意思当你尝试安装已安装的库或开发包时,你会看到此消息。意味着该软件包是由用户手动安装的,而不是通过...详情>>
2023-10-20 11:47:20什么是Flash?
一、什么是FlashFlash是一种基于向量图形的动画技术,由Adobe公司开发。它支持多媒体、游戏、网站设计等应用,可以在各种平台和设备上实现高质...详情>>
2023-10-20 10:24:01热门推荐
一个优异的web前端,需要具备哪些条件?
沸华为自研的数据库gaussdb有哪些优势?
热数据库ER图是怎么做的?
热为什么使用MySQL?
新什么是synchronized?
既然MySQL中InnoDB使用MVCC,为什么REPEATABLE-READ不能消除幻读?
分布式系统里用户ID生成有什么好的方法和规则能满足“少数、尽量短、不能直接看出规则”这几个条件?
isKindOfClass、isMemberOfClass 作用分别是什么?
APP开发流程步骤有哪些?
mysql的MEMORY引擎为什么没有redis的应用广泛?
webpack proxy工作原理为什么能解决跨域?
python的五个特点?
staticmethod和classmethod的区别?
Android App设计开发应遵循哪些原则?