if __name__ == ‘__main__‘原理,一文讲清

同目录下有两个文件t4.py,t5.py

t4.py的代码

class T4:
    def f1(self):
        print('t4 TEST f1')

t = T4()
t.f1()

t5.py的代码

from output.case.t4 import T4

class T5:
    def f1(self):
        print('t5 TEST f1')

    def f2(self):
        print('t5 TEST f2')

t = T5()
t.f1()
t.f2()

在t5.py里面执行,会输出
t4 TEST f1
t5 TEST f1
t5 TEST f2
可以看到在导入t4的时候,t4的代码也被执行了,那怎么办呢?t4的代码这样写就可以

class T4:
    def f1(self):
        print('t4 TEST f1')

if __name__ == '__main__':
    t = T4()
    t.f1()

这样子,在t5执行的时候,输出就是这样
t5 TEST f1
t5 TEST f2
t4的代码就不会被执行,先说结论:if里面的代码块在当前模块被其他模块调用的时候不会被执行!

那为什么呢?我们接着看
在t4.py打印一下__name__,可以看到就是__main__,

class T4:
    def f1(self):
        print('t4 TEST f1')

print(f"__name__: {__name__}")


输出:__name__: __main__

然后我们再执行一下t5.py,d输出的是t4

import t4

class T5:
    def f1(self):
        print('t5 TEST f1')

    def f2(self):
        print('t5 TEST f2')

输出:__name__: t4

所以在t4.py中加上if name == ‘main’:,只是加了一个判断,如果两个字符串相等说明是在当前文件内执行,自然会执行里面的代码块,而在t4被t5调用时,这个判断的结果肯定是false,必然不会执行里面的代码块!

class T4:
    def f1(self):
        print('t4 TEST f1')

if __name__ == '__main__':
    t4 = T4()
    t4.f1()

现在你明白原理了吧?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一言

让我看看你的头像

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值