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__外部执行")
sed.py

在PyCharm中,右键直接运行以上代码文件,执行结果:

我是在__name__前面执行
__main__
我是在__name__内部执行
我是在__name__外部执行
sed.py执行结果

(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__':”内部

 

posted @ 2019-10-25 11:36  槑槑DE  阅读(233)  评论(0编辑  收藏  举报