欢迎加入我们卧虎藏龙的python讨论qq群:729683466
大家在网上下载python代码的时候
有时候会遇到这样的问题
有些工程里面包含了很多py文件
其中只有一个主函数
如何让这么多py文件协同工作
何为主何为次
这都是一些比较小但是很重要的问题
if __name__="__main__"是非常常见,但是很不好理解的一种语法。
简单来说,当一个工程里面有好几个py文件的时候,比如:
很多人会说,当然那个main是主函数啊,上面写着main啊。
大错特错。
虎皮辣椒没有虎皮,鱼香肉丝也没有鱼。
当然,main函数也不一定是“main”函数
那么,哪个才是真正的主函数呢?其实很简单,如果你打开main函数,点击运行,那么main函数就是主函数,如果在运算过程中需要导入mokuai.py。那么这个工程的特点就是main函数的__name__就是“__main__”。
相反,如果你没有打开main.py,而是打开了mokuai.py,然后运行,这时候,mokuai.py就成了"__main__".py。
换句话说,你运行哪个py,哪个py就是主函数,其他的py就都是你调用的模块
比如我在c.py文件里点击Run,然后print(__name__),那么得到的就是__main__。也就是说,直接运行c.py的时候,这个函数就是__main__。
相反,如果我们把c当做一个模块导入的时候呢?
print(__name__)还是不是__main__。??
我们做一个小实验就知道了,
我们运行d.py文件,在d.py文件里面import c。这时候,我们看到运行的结果里面的print(__name__)的结果是c。不是__main__。也就是说,当导入c.py文件的时候,这个c.py已经不是主函数了,当然它的__name__也就不是__main__了。
那么,话又说回来了,设定这个函数的作用是什么了。其实很简单,就是让python知道哪个是主函数,哪个是需要导入的模块。
在编写程序的时候,我们不能一下全部写好所有的函数,有时候需要测试模块的功能,所以经常在模块里面写一些测试函数,这时候是直接在模块里面点击Run运行,这时候模块是主函数,当程序完成以后,不需要这些测试代码,就可以用if __name__=="__main__"的方法来判断。
作者|齐
编辑|齐
感谢大家观看
有钱的老板可打赏一下小编哦
图片来源:
https://images.pexels.com/photos/346768/pexels-photo-346768.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500