理解----if __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()函数会是怎样的结果呢?

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

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

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

总结一下:

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

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

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == ‘__main__‘:,现在就来介 绍一下它的作用.

模块是对象,并且所有的模块都有一个内置属性

__name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__

的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__

的值将是一个特别缺省"__main__"。

///////////////////////////////////////////////////////////////////////////////////////////////////

在cmd 中直接运行.py文件,则__name__的值是‘__main__‘;

而在import 一个.py文件后,__name__的值就不是‘__main__‘了;

从而用if __name__ == ‘__main__‘来判断是否是在直接运行该.py文件

如:

#Test.py

class Test:

def  __init (self):

pass

def f(self):

print ‘Hello, World!‘

if __name__ == ‘__main__‘:

Test().f()

#End

你在cmd中输入:

C:>python Test.py

Hello, World!

说明:"__name__ == ‘__main__‘"是成立的

你再在cmd中输入:

C:>python

>>>import Test

>>>Test.__name__                #Test模块的__name__

‘Test‘

>>>__name__                       #当前程序的__name__

‘__main__‘

无论怎样,Test.py中的"__name__ == ‘__main__‘"都不会成立的!

所以,下一行代码永远不会运行到!

原文地址:http://www.cnblogs.com/kex1n/p/5975575.html

理解----if __name__ == '__main__'

时间: 2024-10-13 02:31:18

理解----if __name__ == '__main__'的相关文章

(转)Python中如何理解if __name__ == '__main__'

摘要 通俗的理解 __name__ == '__main__' :假如你叫李凯.py,在朋友眼中,你是李凯( __name__ == '李凯' ):在你自己眼中,你是你自己( __name__ == '__main__' ). if __name__ == '__main__' 的意思是:当.py文件被直接运行时, if __name__ == '__main__' 之下的代码块将被运行:当.py文件以模块形式被导入时, if __name__ == '__main__' 之下的代码块不被运行.

一个故事带你理解if __name__ == '__main__'

如果你刚刚接触python,相信会在看别人的程序的时候会遇到if __name__ == '__main__'酱紫的语法,如果当时没看懂现在也一知半解的话,看下去,本文可以帮你解决这个问题. 大家都知道:Python的一大优点就是里面的模块非常多--包括内置的模块与自定义模块.我们可以直接利用别人写好的模块去实现自己的需求,酱紫大大的提高了自己的开发效率.也就是说,有时候你可能只需要一些文献阅读的能力与基本的编码能力也可以实现很强大的功能!~~这也许就是Python在各行各业各处开花的原因吧/叹

如何理解 if __name__ == "__main__"

小明.py 朋友眼中你是小明(__name__ == '小明'), 你自己眼中你是你自己(__name__ == '__main__'), 你编程很好, 朋友调你去帮他写程序(import 小明, 这时你在朋友眼中: __name__ == '小明'),但你晚上也会打开xx网站, 做一些自己的事情(直接运行小明.py, __name__ == '__main__') 作者:知乎用户链接:https://www.zhihu.com/question/49136398/answer/13816406

【转载】Python 中的 if __name__ == '__main__' 该如何理解

转自 旷世的忧伤 http://blog.konghy.cn/2017/04/24/python-entry-program/ 程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始.同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口. 而 Py

if __name__ == '__main__' 如何正确理解

今天刷知乎,突然看到这个问题,发现很多人都是简单的回答了一下,对于很多人来说,更准确的说应该是大部分的 Python 初学者,这样的回答很容易让人理解.所以这里我来做说一下,希望能把这个问题说明白. 先举一个例子:假设我们有一个add.py文件,里面的代码是这样: def add(a, b):    return a + badd(1,2)#用于测试上面函数是否正常 这里就是一个求两数之和的函数,然后我在另一个文件中调用这个模块,这个时候就会把add(1,2)也运行,但是我是不希望运行add(1

Python if __name__ == '__main__': 理解

if __name__ == '__main__':是为了区分.py文件是自己直接被执行还是被其他文件调用. 当.py文件直接被执行时,默认的是 __name__ = '__main__',因此条件成立,将执行if语句中的操作: 当.py文件被其他文件调用时,默认的是 __name__ = 'xxx', (当前文件为xxx.py),因此if语句判断条件不成立,if中的操作不会执行: 但是,这两种情况下,if语句之外的其他语句都将正常按顺序执行,且在if语句执行之前. Python if __na

python中 __name__ == '__main__'的理解

python中常常会用到: if __name__ == '__main__': 这段代码的意思为: 当我们直接运行该段代码所在的py文件时(python xxx.py),  __name__ == '__main__' 为真,if条件成立,那么就会执行if下面的语句. 当我们在另一个py文件中使用import导入包含该段代码的py文件时,__name__的值是包含该段代码的py文件的名字,而不是__main__. python中 __name__ == '__main__'的理解

python3----如何简单地理解Python中的if __name__ == '__main__'

1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '__main__'). if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行:当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行. 2. 程序入口

Python 中 if __name__ == '__main__' 的正确理解

程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始.同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口. 而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行.也就是从脚本第一行开始