Python中if __name__ == "__main__"详细解释,__name___main__


想必很多初次接触python都会见到这样一个语句,if __name__ == "__main__":

那么这个语句到底是做什么用的呢?在解释之前,首先要声明的是,不管你是多么小白,你一定要知道的是:

1.python文件的后缀为.py;

2..py文件既可以用来直接执行,就像一个小程序一样,也可以用来作为模块被导入(比如360安全卫士,就是依靠一个个功能模块来实现的,好比360安全卫士本身框架是一个桌面,而上面的图标就是快捷方式,这些快捷方式所指向的就是这一个个功能模块)

3.在python中导入模块一般使用的是import

好了,在确定知道以上几点之后,就可以开始解释if __name__ == "__main__":这个语句了。

首先解释一下if,顾名思义,if就是如果的意思,在句子开始处加上if,就说明,这个句子是一个条件语句。学习if语句的使用是很简单的,当然想要真正灵活运用还需大量的实践。

接着是 __name__,__name__作为模块的内置属性,简单点说呢,就是.py文件的调用方式。

最后是__main__,刚才我也提过,.py文件有两种使用方式:作为模块被调用和直接使用。如果它等于"__main__"就表示是直接执行。

总结:在if __name__ == "__main__":之后的语句作为模块被调用的时候,语句之后的代码不执行;直接使用的时候,语句之后的代码执行。通常,此语句用于模块测试中使用。


python的问题 if __name__ == '__main__':

先回答__:由于python的类成员都是公有、公开的被存取public,缺少像正统面向对象语言的私有private属性。于是就用__来将就一下,模拟私有属性。这些__属性往往是内部使用,通常情况下不用改写。也不用读取。加上2个下划线的目的,一是不和普通公有属性重名冲突,二是不让对象的使用者(非开发者)随意使用。

面向对象是一种方法学的提高。不用对象用模块的确能行,就像C语言也用类似的、没有对象的方式提供模块,也能开发任何东西。但用了对象能提高代码复用、提高开发效率,减轻开发者的劳动。怎么用好对象,涉及太广,需要用几本书来写。简单给你说
就像工厂做一个石膏雕塑。
class类就相当于模具。object对象相当于模具倒出来的雕塑。
雕塑可以大量被复制。要修改雕塑,是去修改模具,而不是改雕塑成品。
从数据的角度,一个雕塑可能由多个基础部件组成,手、脚、头,这些是数据
当然对象也有动作,对象所有的函数都是它的动作,比如跑、吃、叫。
最常见的,学生类,规定一些数据,姓名、电话、年龄、这些是数据
学生会“答题” “吃饭”,“消费”,“联系”“动手”这些是传递消息的动作。
这种把数据和动作结合就是一个对象,类拿来规范这些数据和动作。再次使用这同一类的对象,就不需要重复开发。
 

PYTHON里if __name__ == "__main__":是干什的

__name__是指示当前py文件调用方式的方法。如果它等于"__main__"就表示是直接执行,如果不是,则用来被别的文件调用,这个时候if就为False,那么它就不会执行最外层的代码了。
比如你有个Python文件里面
def XXXX():
#body
print "asdf"
这样的话,就算是别的地方导入这个文件,要调用这个XXXX函数,也会执行print "asdf",因为他是最外层代码,或者叫做全局代码。但是往往我们希望只有我在执行这个文件的时候才运行一些代码,不是的话(也就是被调用的话)那就不执行这些代码,所以一般改为
def XXXX():
#body
if __name__="__main__":
print "asdf"
 

评论关闭