Python中if __name__ == ‘__main__‘:

也看了一些别人的总结,这里就结合其他文章谈谈自己的理解。
Python中**if name == ‘main’:**我刚开始看的时候就直接把他当成了一个项目运行的开始,至于为什么也没有仔细研究,后来看得多了,就研究了一下。

__name__是每一个python文件的内置变量,是指当前被执行模块文件的名字(带后缀名.py),比如我们新建了 model01.py

#  model01.py
def test(a, b):
    print(a + b)


print(__name__)
if __name__ == '__main__':
    test(3, 3)
__main__
6

main一直指当前模块文件(带后缀名.py),有的人可能会问这有区别吗?当然有,在导入之后main虽然还是指当前模块文件(带后缀名.py),但是name会发生改变。
然后又新建文件
001.py

# 001.py
import model01

model01.test(4, 4)
print(__name__)
model01
8
__main__

对比上下两个程序不难发现__name__发生了变化,导入之后变成没了后缀名的,有的人问之前不就一个__main__吗,(你看model01.py里的__name__在第二个程序里面是model01,相当于从model.py变成了model01),如果还是不懂,这里举个例子,在model01.py里if name == ‘main’:就相当于if model01.py==model01.py:这里确实相等对吧,所以输出6。

但是在001.py中为什么没有执行model01.py的 if name == ‘main’:,因为在第二个程序看他们的时候,if name == ‘main’:相当于if model01==model01.py:这里就不相等了,所以没有执行去输出6,而只是执行输出了8。
这也就是我们在导入一些自己写的一些文件时程序自动运行,如果我们平时在写py文件的时候使用了这个就可以避免这个问题,这个在我们学习进程时使用multiprocessing模块创建子进程时更要使用这个,因为可以解决Windows下创建子进程递归报错的问题。当然要是Mac或者Linux不会出现递归的问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值