熟悉我的老铁们都知道,我现在做嵌入式软件开发,日常用C语言来写BUG(皮一下)。
由于今年公司今年业绩不好,部分项目处于停摆阶段,我参与的一个项目也被叫停。
之后,我在公司比较闲散。但年轻人闲不住,精力很旺盛,我就把python拿来玩一玩。
背景
今天,在公司用python写一个从几百个文件夹中提取特定 .c 文件的脚本。
我们Team的同事 文 在做测试,看到我用python写的代码,随口问了句,你这代码里的if name == "main": 是什么意思。
那一瞬间,我是蒙的。
他在说什么,我写过这段代码吗?
仔细一看,代码里还真有。我支支吾吾解释了半天,最终放弃了,因为真的不知道答案。
回想午饭时,还在他们面前吹牛逼python多么好用,现在被同事随口一问题轰成渣,恨不得找个地洞钻进去。
寻找答案
既然发现问题,那就肯定要打破砂锅问到底。
去优快云看了看别人的文章,他们对这个问题解释的比较绕,但大致能明白什么意思。
但看别人说,不如自己用代码实现一遍。
接下来,是简单的实现步骤。
如果程序中有:if __name__ == "__main__"。例:程序demo.py。
在IDLE中直接运行demo.py,那么 print(__name__)输出为 “__main__”。
此时if __name__ == "__main__" 为真,if 条件中的程序能够运行。
但在python的第三方库目录中,建立Coder文件夹,并将demo.py放进去。
在python IDIE中使用 from Coder import demo 时,print(name)输出为“Coder.demo”。
此时,if __name__ == "__main__" 为假,if 条件中程序不能执行。
总结
经过上述测试,老铁们应该理解为什么程序中会有if __name__ == "__main__"的工作原理了吧。
对于这段代码,我的理解是:在程序中写了一个Class,有的人或许随手就写了执行代码(主体程序),但如果某天要使用该代码的类,直接import这个文件,程序运行可能会出现问题。
但如果在程序主体前添加 if name=="main" ,import该文件时,if条件句中的程序将不会执行,保证代码的可用性。
反思
(1)我用Python写过很多程序,但仍有很多细节不明白。这需要在以后用Python的过程中多多留心。
(2)当然,让别人review自己的代码也是一个不错的提高方式。他们这些专业coder总会以最专业的视角提供好的建议。
既然把问题搞明白了,周一上班就去给同事文解答疑惑。
欢迎关注
PS. 长按关注"酷酷的coder",从汽车行业成功转行程序员,分享转行后学到的各种知识和感悟。
