可以解释一下if __name__=="__main__": 这个是什么意思吗

img


编写程序,china_smoking.csv文件是有关中国某些城市吸烟与癌症的统计数据,从键盘中输入城市名称,若这个城市在文件中有记录,则打印输出smoking_yes_cancer_yes和smoking_no_cancer_no的数据。

这里有两个知识点:
1). __name__是当前py程序(比如叫abc.py)的一个默认属性,如果当前程序被独立执行,这个属性的值就是__main__,如果被别的程序当做模块导入或调用,这个属性的值会被自动改成程序的名字(比如abc);
2). 当一个py程序被别的程序当做模块导入或调用的时候(比如别的程序需要借用这个程序里定义的函数或类),该程序会在被导入的时候自动运行一次。

所以通过比较__name__这个属性的值,就可以判断当前程序是独立执行,还是被别的程序导入或调用的。而如果是被别的程序调用,就可以避免在被调用的时候自动执行if语句后面的代码,而带来不必要的麻烦。

这个始终都是true,执行if里面的代码


if __name__ == '__main__' : 的作用是:
    确保只有单独运行该模块(即直接运行该脚本)时,此表达式才成立,才可以进入此判断语法,执行其中的测试代码;
反之,如果只是作为模块导入到其他程序文件中,则此表达式将不成立,运行其它程序时,也就不会执行该判断语句中的测试代码。

再说的通俗点就是,如果你直接运行这个脚本,那么if __name__ == '__main__' 下面的命令会被执行;
如果是别的代码里引用的这个脚本,if __name__ == '__main__'这块就相当于不存在。