chinaab 发表于 2018-8-14 11:23:18

python中的if__name__== "__main__"

1、  
# vim if__name_0
  
#_*_coding:utf8_*_
  
def foo():
  
    print "in foo"
  
print__name__
  
foo()
  

  
# python if__name_0
  
__main__
  
in foo
  

  
>>> import if__name_0
  
if__name_0
  
in foo
  

  
# python直接执行if__name_0 和 import if__name_0 后的输出结果不一样,
  
# 是因为python 直接执行print __name__ 输出的结果是 __main__ , 而import
  
# 导入执行__name__ 输出的结果是脚本的名字。
  

  
2、
  
# vim if__name_1
  
#_*_coding:utf8_*_
  
import if__name_0
  
if__name_0.foo()
  

  
# python if__name_1
  
if__name_0
  
in foo
  
in foo
  

  
python执行if__name_1这个脚本后,会先import if__name_0 ,根据上面已经得出的结果,可以知道
  
import if__name_0 输出的是:
  
if__name_0
  
in foo
  
然后脚本会再执行函数if__name_0.foo(),输出的结果是:
  
in foo
  
所以最终输出的结果是:
  
if__name_0
  
in foo
  
in foo
  

  
>>> import if__name_1
  
if__name
  
in foo
  
in foo
  

  
3、
  
# vim if__name_2
  
#_*_coding:utf8_*_
  
def foo():
  
    print "in foo"
  
print __name__
  
if __name__ == "__main__":
  
    foo()
  

  
# python if__name_2
  
__main__
  
in foo
  
python执行脚本的时候,print __name__输出的结果是__main__ , __name__ == "__main__" ,
  
所以继续执行下面的函数,输出: in foo , 所以最终输出结果为 :
  
__main__
  
in foo
  

  
>>> import if__name_2
  
if__name_2
  
import if__name_2的时候,print __name__ = if__name2 ,不等于__main__ , 所以后面的函数就
  
不执行了,最终输出的结果是if__name_2
  

  

  
4、
  
# vim if__name_3
  
#_*_coding:utf8_*_
  
import if__name_2
  
if__name_2.foo()
  

  
# python if__name_3
  
if_name_2
  
in foo
  
import if__name_2 根据上面得出的结果,import if__name_2输出的是:if__name_2
  
函数if__name_2.foo()输出的结果是:in foo , 所以最终输出的结果是:
  
if_name_2
  
in foo
  

  
>>> import if__name_3
  
if__name_2
  
in foo
页: [1]
查看完整版本: python中的if__name__== "__main__"