python3基础-__name__ == '__main__'
__name__ == '__main__'
(1)Python不需要Main函数也能执行
Python是解释性语言,不需要先编译成二进制语言,再执行。Python是动态,是从上至下逐行解释运行。
例如:sed.py
# -*- encoding: utf-8 -*- """ @File : sed.py.py @Time : 2019/10/25 9:44 @Software: PyCharm """ def fetc(): print("我是查询函数") def add(): print("我是添加函数") def change(): print("我是修改函数") def delete(): print("我是删除函数") print("我是在__name__前面执行") if __name__ == '__main__': print(__name__) print("我是在__name__内部执行") msg=""" 1:查询 2:添加 3:修改 4:删除 """ print("我是在__name__外部执行")
在PyCharm中,右键直接运行以上代码文件,执行结果:
我是在__name__前面执行 __main__ 我是在__name__内部执行 我是在__name__外部执行
(2)模块导入
当我们把模块A中的代码在模块B中进行import A时,只要B模块代码运行到该import语句,模块A的代码会被执行
demoA.py文件内容
def demoA_test(): print("我是模块A的内容") demo_A='Hi,MY name is demoA' print(demo_A) demoA_test()
以下代码所在文件名为demoB.py,在该文件中导入(import)了demoA模块(文件),即上面的demoA.py
from demoA import demoA_test print("我是模块B的内容") demoB='Hi,MY name is demoB' print(demoB)
运行demoB.py文件,执行结果如下
我是模块A的内容 Hi,MY name is demoA 我是模块B的内容 Hi,MY name is demoB
如果demoA.py中,我们有部分的代码不想在被导入到demoB.py时直接被运行,但在直接运行demoA.py时可直接运行,那该怎么做呢?那就可以用到“if __name__==’__main__:”这行代码了,我们队上面用到的demoA.py代码进行修改:
def demoA_test(): print("我是模块A的内容") demo_A='Hi,MY name is demoA' print(demo_A) if __name__ == '__main__': demoA_test()
运行demoB.py文件,执行结果如下
我是模块B的内容 Hi,MY name is demoB
demoA.py中的demoA_test()的值就没有再被输出了。所以,当你要导入某个模块,但又不想改模块的部分代码被直接执行,那就可以这一部分代码放在“if __name__=='__main__':”内部