我们经常能看到程序里最后会写一段:
if __name__ == __main__:func()
简单的解释一下这个语句的意思的话就是:
当程序单独运行的时候执行func函数。
当程序单独运行的时候,__name__就是"_main_"(当这个程序被其他程序调用的时候,__name__就会变为这个程序的名字)
写这句语句的最终目的是:希望这个程序既能单独运行也能被其他程序调用运行
为什么这么说呢?从逻辑上,如果一个程序要单独运行,就一定需要一个输出。也就是需要在程序中使用函数。但是如果别的程序调用这个程序的话,这个程序就会先输出一遍在这个程序内部使用的函数的结果,然后再输出调用这个程序的程序希望的输出。这样的结果是在调用的时候不想见到的。
因此,利用__name__属性在程序单独运行和被调用时的属性值不同,进行一次判断,如果是单独运行就展现程序本身使用函数的结果;如果不是就不输出这一部分的结果。
def func(words):print(words)
func(this is origin py)
from __name__main_test_origin import funcfunc("this is the script that import the origin one")
输出时就是先输出被调用程序的运行结果,然后才会输出调用了该函数的程序所需要的结果。
def func (words) :print (words)if __name__ == "__main__":func("this is origin py")
这样就只输出调用func函数的程序需要的结果了。
def func (words) :print (words)func(__name__)
结果第一行先输出被调用程序输出结果,也就是当程序被调用时,__name__的取值,也就是这个程序的名字。
可以看到,单独运行程序的时候它的__name__属性是_main_