python中透彻分析 if __name__="__main__" (两个小短横)作用,记录下来以备后用

最近学python,学习他人的python代码时,经常会看到 if __name__=__main__,运行时,也是正常运行的,心里模模糊糊能明白这句的意思,但就是无法透彻。今天突然又看到了这句,打算网上搜索一波彻底搞懂。结果如下。

if_ _name__="__main__",用于被引用(import),使这个模块不会自动执行(一个模块就是一个python程序),

这一句对你运行该程序是没有影响的,看test1.py和test2.py(因为__name__是创建python程序即模块时自动生成的内置属性,当你运行时,默认等于__main__)

#test1.py
def printinfo():
    print("this is test1,Hello")

if  __name__  =="__main__":
    printinfo()



输出结果:
this is test1,Hello
    
#test2.py
def printinfo():
    print("this is test2,Hello")

printinfo()


输出结果:
this is test2,Hello

但当你所编写的程序被当做一个模块别引用时,有没有这句结果就不一样了

#test3.py
import test2
def printinfo():
    print("this is test3,Hello")

printinfo()


输出结果:
this is test2,Hello
this is test3,Hello
#test4.py
import test1

def printinfo():
    print("this is test4,Hello")

printinfo()


输出结果:
this is test4,Hello

可以发现test3.py中引用test2时把test2执行了一遍,而test4.py引用test1时没用执行test1,这就是 if  __name__="__main__",的作用,当你运行程序时,__name__这一内置属性是为__main__的,但当他被当做模块被引用时,__name__这一属性就等于这一python程序的名字了,test3.py引用test1时,test1中的那个__name__就为test1了,所以没有输出

#test5.py

def printinfo():
    print("this is test5,Hello")


if __name__=="test5":
    printinfo()



输出为空

#自己运行时,__name__为"__main__"

我们修改test3.py

#test3.py
import test5

def printinfo():
    print("this is test3,Hello")

printinfo()

输出结果:
this is test5,Hello
this is test3,Hello

可以看到test5里面的函数被执行了,说明此事test5中的__name__为test5

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值