浅析python 中__name__ = '__main__' 的作用_python

很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = '__main__' 的作用,到底干嘛的?

有句话经典的概括了这段代码的意义:

“Make a script both importable and executable”

意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行

这句话,可能一开始听的还不是很懂。下面举例说明:

先写一个模块:

#module.py
def main():
  print "we are in %s"%__name__
if __name__ == '__main__':
  main()

这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():

但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?

#anothermodle.py
from module import main
main()

其执行的结果是:we are in module

但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

总结一下:

如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python
, 作用
__name__=''__main__''
python if name main、python name main、python中if name main、python mainloop作用、main python中的作用,以便于您获取更多的相关知识。

时间: 2024-12-31 11:56:10

浅析python 中__name__ = '__main__' 的作用_python的相关文章

浅析Python中yield关键词的作用与用法_python

前言 为了理解yield是什么,首先要明白生成器(generator)是什么,在讲生成器之前先说说迭代器(iterator),当创建一个列表(list)时,你可以逐个的读取每一项,这就叫做迭代(iteration). >>> mylist = [1, 2, 3] >>> for i in mylist : ... print(i) 1 2 3 mylist 是一个可迭代的对象.当使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象: >>>

Python中__name__的使用实例_python

1. 如果模块是被导入,__name__的值为模块名字 2. 如果模块是被直接执行,__name__的值为'__main__' Py1.py 复制代码 代码如下: #!/usr/bin/env python def test():  print '__name__ = ',__name__ if __name__ == '__main__':  test() Py2.py 复制代码 代码如下: #!/usr/bin/env python import Py1.py   def test():  

浅析python中的分片与截断序列_python

序列概念 在分片规则里list.tuple.str(字符串)都可以称为序列,都可以按规则进行切片操作 切片操作 注意切片的下标0代表顺序的第一个元素,-1代表倒序的第一个元素:且切片不包括右边界,例如[0:3]代表元素0.1.2不包括3. l=['a','b','c','d',5] 1.获取列表的前3个元素 >>> l[0:3] ['a', 'b', 'c'] >>> l[:3] ['a', 'b', 'c'] 2.获取列表的后3个元素 >>> l[-

PYTHON中__NAME__方法的使用方法

学习python中会发现很多python脚本都会有一句话:if __name__ == '__main__'.这有点像C,java中的主函数.那么Python中__name__具有什么含义呢?网上很多说法和教程,但是百闻不如一见,要自己动手去发现. 首先看官方文档定义__name__: __name__ is the module's name in the Python package namespace 我们写两个py文件试试就知道了. a.py print('============a.p

【转载】Python 中 if __name__ == '__main__': 的作用

# hello.py  ? 1 2 3 4 5 6 7 def sayHello():     str = " hello "     print (str);   if __name__ == " __main__ " :     print ( ' This is main of module "hello.py" ' )     sayHello()       python 作为一种脚本语言,我们用 python 写的各个 module

Python中if __name__ == "__main__"详细解释_python

想必很多初次接触python都会见到这样一个语句,if __name__ == "__main__": 那么这个语句到底是做什么用的呢?在解释之前,首先要声明的是,不管你是多么小白,你一定要知道的是: 1.python文件的后缀为.py: 2..py文件既可以用来直接执行,就像一个小程序一样,也可以用来作为模块被导入(比如360安全卫士,就是依靠一个个功能模块来实现的,好比360安全卫士本身框架是一个桌面,而上面的图标就是快捷方式,这些快捷方式所指向的就是这一个个功能模块) 3.在py

浅析Python中的多进程与多线程的使用_python

在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global interpreter lock(也被亲切的称为"GIL")指指点点,说它阻碍了Python的多线程程序同时运行.因此,如果你是从其他语言(比如C++或Java)转过来的话,Python线程模块并不会像你想象的那样去运行.必须要说明的是,我们还是可以用Python写出能并发或并行的代码,并且能带来性能的显著提升,只要你能顾及到一些事情.如果你还没看过的话,我建议你看看Eqbal Quran的文章

浅析Python中元祖、列表和字典的区别_python

1.列表(list) list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的项目应该包括在方括号中,这样Python就知道你是指明一个列表.一旦你创建了一个列表,就可以添加.删除,或者是搜索列表中的项目.由于你可以增加或者删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的,且列表是可以嵌套的. 实例: #coding=UTF-8 #author:RXS002 animalslist = ['fox','tiger','rabbit','snake']

详解Python中DOM方法的动态性_python

文档对象模型 xml.dom 模块对于 Python 程序员来说,可能是使用 XML 文档时功能最强大的工具.不幸的是,XML-SIG 提供的文档目前来说还比较少.W3C 语言无关的 DOM 规范填补了这方面的部分空白.但 Python 程序员最好有一个特定于 Python 语言的 DOM 的快速入门指南.本文旨在提供这样一个指南.在 上一篇专栏文章 中,某些样本中使用了样本 quotations.dtd 文件,并且这些文件可以与本文中的代码样本档案文件一起使用. 有必要了解 DOM 的确切含义