1、首先这句话并不是类似其他编程语言里的main()函数,python程序是自上而下执行的,不需要main入口 2、有句话经典的概括了这段代码的意义:“Make a script both importable and executable”,意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。 在python编译器读取源文件的时候会执行它找到的所有代码,而在执行之前会根据当前运行的模块是否为主程序而定义变量name的值为_main_还是模块名。 因此,该判断语句为真的时候,说明当前运行的脚本为主程序,而非主程序所引用的一个模块。 当判断语句为假的时候,说明当前运行的主程序并不是该语句所在的文件,该语句所在的文件是作为一个模块被引用,这时候name 被定义为了该语句所在的模块名字(也就是文件名) 看个例子:
# file one.py def func(): print("func() in one.py") print("top-level in one.py") if __name__ == "__main__": print("one.py is being run directly") else: print("one.py is being imported into another module") # file two.py import one # start executing one.py print("top-level in two.py") one.func() if __name__ == "__main__": print("two.py is being run directly") else: print("two.py is being imported into another module")当运行python one.py,输出:
top-level in one.py one.py is being run directly当运行python two.py,输出:
top-level in one.py one.py is being imported into another module top-level in two.py func() in one.py two.py is being run directly可见,当two.py脚本里导入one模块时,也就是import one时,程序会执行one.py模块,且对one来说,name变量的值就是one(模块名)了