为什么要写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()
现在你明白原理了吧?
更多学习笔记移步
https://www.cnblogs.com/kknote
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY