因为是自己看书学习python,所有经常会因为一个小的问题被卡很长时间,比如今天这个代码
if __name__ == '__main__':
特别要注意的是name前后的下划线是两个,后面main前后的下划线也是两个!!!!
在Python中,if __name__ == '__main__':
是一种常见的模式,用于判断一个Python文件是直接运行还是被导入作为模块使用。
每个Python模块(即Python文件)都包含一个内置变量__name__
,当这个文件被直接运行时,__name__
的值会被设置为__main__
。如果文件被导入到其他模块中,__name__
的值则会被设置为该文件的模块名(不包含.py
后缀)。因此,通过检查__name__
的值,可以决定是否执行某些代码。
具体来说,如果一个Python文件包含if __name__ == '__main__':
的代码块,那么当这个文件被直接运行时,该代码块内的代码会被执行。但是,如果这个文件被导入到另一个Python文件中,那么该代码块内的代码将不会被执行。这种机制常用于控制脚本的入口点,确保脚本在被直接运行时执行特定的操作,而在被导入时则不执行这些操作。
通过代码来看一下吧
def hanshu():
print('你好呀')
if __name__ == '__main__':
hanshu()
print('是的,我很好')
输出结果是
你好呀
是的,我很好
进程已结束,退出代码为 0
如果没有if__name__='__main__' 前面的hanshu()也不会真正执行,也就是说这个代码是负责运行程序的,类似于print
另外的解释
if __name__ == '__main__'的作用和原理
最简单的理解就是这样:
__name__ 是当前模块名,当模块被直接运行时,模块名为 __main__。
1、所以 if __name__ == '__main__' 这句话的意思就是当前模块被直接运行时,以下代码将被执行,
2、当模块是被其它程序导入时,代码块不会被执行。
举例,比如新建了一个叫text.py的文件,写入如下代码
print('测试程序--函数外')
def main():
print('测试程序--函数内')
if __name__ == '__main__':
main()
print('hello world')
输出结果是
测试程序--函数外
测试程序--函数内
hello world
举例证明2,还是上面这个text.py,在这个文件的同目录下新建另外一个py文件,里面写入如下代码
import test
输出结果是
测试程序--函数外