鼓吹用Python的我,被C程序员的一个问题轰成渣

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dwayne_blog/article/details/86546747

熟悉我的老铁们都知道,我现在做嵌入式软件开发,日常用C语言来写BUG(皮一下)。

由于今年公司今年业绩不好,部分项目处于停摆阶段,我参与的一个项目也被叫停。

之后,我在公司比较闲散。但年轻人闲不住,精力很旺盛,我就把python拿来玩一玩。

背景

今天,在公司用python写一个从几百个文件夹中提取特定 .c 文件的脚本。

我们Team的同事 文 在做测试,看到我用python写的代码,随口问了句,你这代码里的if name == "main": 是什么意思。

那一瞬间,我是蒙的。

他在说什么,我写过这段代码吗?

仔细一看,代码里还真有。我支支吾吾解释了半天,最终放弃了,因为真的不知道答案。

回想午饭时,还在他们面前吹牛逼python多么好用,现在被同事随口一问题轰成渣,恨不得找个地洞钻进去。

寻找答案

既然发现问题,那就肯定要打破砂锅问到底。

去CSDN看了看别人的文章,他们对这个问题解释的比较绕,但大致能明白什么意思。

但看别人说,不如自己用代码实现一遍。

接下来,是简单的实现步骤。

如果程序中有: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",从汽车行业成功转行程序员,分享转行后学到的各种知识和感悟。

酷酷的coder
酷酷的coder

 

展开阅读全文

C语言渣渣问题T^T,求大神

12-03

[code=c#]includern#includern#includern#includern#includern#define TUB 50rn#define COUNUM 3rn#define STUNUM 2rnFILE *fp;rnstruct studentrnrn int number;rn char name[10];rn int score[COUNUM];rn int sum;rn float average;rns[TUB];rntypedef struct student STU;rnchar menu(void)rnrn char ch;rn printf("\n\n");rn printf(" ***********************************************\n");rn printf(" * *\n");rn printf(" * 0:Exit 1:Append record *\n");rn printf(" * 2:List record 3:Delete record *\n");rn printf(" * 4:Modify record 5:Search record *\n");rn printf(" * 6:Sort Score in descending order by sum *\n");rn printf(" * 7:Sort Score in ascending order by sum *\n");rn printf(" * 8:Sort Score in descending order by num *\n");rn printf(" * 9:Sort Score in ascending order by num *\n");rn printf(" * 10:Write to a File 11:Read from a File *\n");rn printf(" ***********************************************\n");rn printf(" * TIP:There were no data of the student in 1!*\n");rn printf(" * Advice of input the information of students*\n");rn printf(" ***********************************************\n");rn printf("\n\n请输入选择的功能序号:");rn scanf("%c",&ch);rn return(ch);rnrnvoid append()rnrn int i,j,t;rn printf("Please Input the data:\n");rn for(i=0;i4)rn printf("the number is error,please check it again!");rnrnvoid descending_sum()/*按总分排序_降序排列,打印出学生姓名和成绩*/rnrn printf("将按总分降序排序\n");rn int i,j;rn STU t;rn for(i=0;is[j].sum)rn rn t=s[i];rn s[i]=s[j];rn s[j]=t;rn rn rn for(i=0;is[j].number)rn rn t=s[i];rn s[i]=s[j];rn s[j]=t;rn rn rn for(i=0;is[j].number)rn rn t=s[i];rn s[i]=s[j];rn s[j]=t;rn rn rn for(i=0;i 论坛

没有更多推荐了,返回首页