大学写Python脚本加上这个
写Python脚本一定要加上这个!
写Python脚本, 一定要加上这个
使用Python的人, 平时经常会写一些脚本, 不管是为了提升
工作效率, 还是为了满足一些特定的需求, Python脚本都是
一个常见又有用的东西。
但是,我最近发现了一个以前不曾察觉的问题,就是脚本里面是
否添加if_name_=="_main_":这个语句, 对脚本的使用
其实是有很大影响的,并且这里面还有很大的学问。
常见误区
很多朋友在写脚本时比较随意,简单的脚本直接一溜写下来,没
有函数,顺序执行。复杂点的脚本,可能会加函数。这种写法可
读性比较差,经常让人一眼找不到程序运行的入口和顺序。
而Python社区比较推荐的写法是在写脚本时, 加上下面这个
语句:
写Python脚本, 一定要加上这个
大多数人看到这里,会不会说,这有什么,加不加这个没那么重
要吧!
先不要忙着不屑,让我们一起来仔细掰扯掰扯!
有什么用
在具体说明if_name_=='_main_'的作用前, 先从一个简
单的实例直观上感受一下。
我们看下area.py的运行结果:
的PI变量, 在运行的时候, const.py中函数train() 中的打
印也带过来了,而我们只是引用变量,并没有引用函数,所以这
是我们不愿意看到的。
解决这个问题的方法也很简单, 我们只需在const.py中加上
一句:
再次运行area.py, 输出结果如下:
这是我们预期的结果。
程序运行入口
丛上述实例可以发现, 如果没有if_name_=="_main_":,
作为area.py导入文件时const.py中的所有代码都被执行
了,而加上之后就只运行导入的部分代码。
这就是if_name_=="_main_":显而易见的作用, 实际上
if_name_=="_main_":就相当于是Python模拟的程序
入口。由于模块之间相互引用,不同模块可能都有这样的定义,
而入口程序只能有一个, 选中哪个入口程序取决于__name_的值。