Python中的if__name__ ==__ main __ : 简单易懂的解释
前言相信有很多小伙伴在学习Python时,往往会看到许多代码中都会有一句if__name__==__main __:,有时会感到疑惑:这行代码是干什么的呢?
我直到第一次参加比赛后才意识到这行代码的重要性,就是因为不懂这
句代码,一个程序我调了一天,也不知道问题出错在哪里(已经哭晕在
wc)。
下面结合我自己的理解,带着大家一起了解一下这句代码。
要想理解这个概念,我们首先要了解一下模块的概念,说白了,一个模块就是一个.py文件。
而每一个.py文件都有一个对应的内置属性name,name也有一个对应的值,一般为模块名。
例如,import 模块名,则name的值为 模块名 。
一般来说,如果你新创建了一个模块,并且在这个模块里面运行了程序,则相当于__name__ == __main __, 下面我们举个例子来说明一下。
如 创建一个模块text1.py:
1. def func():
2. print("hello,world!")
3. if __name__=="__main__":
4. func()
在该模块中,首先定义了函数func(),用来打印出hello, world!,然后判断__name__ 是否等于__main__ ,如果等于,则打印,反之则不打印,因为我们直接在创建的模块text1.py中运行这些程序,相当于__name__ ==__main__条件成立,所以打印。
现在运行该模块,结果为:
1. hello,world!
接下来,我们再创建另一个模块text2.py,并在text2.py中写入以下代码:
1. import text1
2. print("world,hello!")
在该模块中,首先import test1,然后打印world,hello! 做测试用,运行该模块,结果为:
1. world,hello!
运行结果说明没有运行text1里面的程序,说明__name__ 不等于__main__
结论通过上面test1.py和test2.py两个模块,我们现在可以得出一个重要的结论: 如果模块是被直接运行的,则该模块中的代码块被运行,如果模块被import,则该模块中的代码块不被运行。



