查阅了大佬们的解释,这句貌似是用于规定入口或避免不想被调用的部分代码被调用,但是为什么按照下列代码,if条件句下面已经包含了boo,foo两个函数及两个print指令,在其他文件中还是可以调用boo和foo两个函数呢?(但是两个print指令缺无法调用)谢谢各位路过大佬!
def foo():
print('hello, world!')
def boo():
print('sayonara,world')
if name == '__main__':
print('call foo()')
foo()
print('call bar()')
boo()
python是逐句执行的语言,比如你的代码,Python解释器首先看到:def foo():,知道有个这个函数,先不管内容,向下执行,
又看到了defboo这句话,定义了函数,不管内容,向下执行,此时看到了if语句,执行条件判断。
首先查看文档的__name__属性,和__main__比对,发现,诶,你看这俩是一样的。
于是执行if内的语句。
之所以说是程序入口是便于理解而已。
而其他文件导入此文件时,此文件的__name__属性就不再是__main__了,而是abc.py(假设这个文件名字是abc,)即就是文件的名字。
所以其他文件导入这个文件,执行不到if里面的内容。
纯手打,给个赞吧,谢谢啦
实例看图片
简单说就是避免逐行执行的尴尬
再复杂点就是有利于测试