程序员的公众号:源1024,获取更多资料,无加密无套路!
最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上
作为解释性脚本语言,python程序并没有特定的
main()
主程序入口,一般都是自顶向下,逐行执行,__name__
?==?"__main__"
可以理解为程序的执行入口。
def test():
print('this is main1 func')
print('__name__:',__name__)
print('__main__:','__main__')
test()
#输出
this is main1 func
__name__: __main__
__main__: __main__
从上面代码可以看到,在main1.py这个文件中,__name__和__main__的值是一样的,所以
__name__ == '__main__' 一直都是True。
接下来看看如果作为模块引用到别的模块的时候,这两个值还一样吗?
import main1
def test():
print('this is main2 func')
if __name__ == '__main__':
test()
#输出
this is main1 func
__name__: main1
__main__: __main__
this is main2 func
从输出结果可以看到,__name__的值变成了模块名main1,而__main__的值不变,如果我们只是想调用main2中的test方法,不调用main1中的test方法,我们对main1文件进行修改,如下:
def test():
print('this is main1 func')
print('__name__:',__name__)
print('__main__:','__main__')
if __name__ == '__main__':
test()
从上面的代码示例中,我们可以得出结论:
___name__
==? '__main__' 的主要作用就是为了控制函数逻辑在其他模块中引入时不执行。