if __name__='__main__'

要理解 if __name=’__main __’ 把握3个要点:

  • __name__本身,代表什么
  • if __name=’__main __'这个表达式,代表什么
  • 常见场景:模块导入

对上面的3个要点进行逐一解释:

  1. __name__本身,代表什么?
    python有内置的魔法方法,同时也有内置的魔法属性,以__开头和结尾的通常就是魔法方法和魔法属性。__name__就是python内置的魔法属性, 代表对应py文件的名称(py文件的命名)。
  2. if __name=’__main __‘这个表达式,代表什么?
    if __name=’__main __'是一个判断表达式,表示:左边代表py文件的命名,是否,与右边‘main’这个字符值相等。如果相等,执行if下面的语句(通常是函数调用)。
  3. 常见场景:模块导入
    新建一个py文件,命名为test1,内容为:
def a():
    print("这是函数a")

def b():
    print("这是函数b")

a()
b()
print(__name__)

打印结果为:

这是函数a
这是函数b
__main__

将test1内容更改为:

def a():
    print("这是函数a")

def b():
    print("这是函数b")

# a()
# b()
# print(__name__)

if __name__ == '__main__':
    a()
    b()
    print(__name__)

打印结果为:

这是函数a
这是函数b
__main__

两次结果一样。
再新建一个py文件,命名为test2,内容为:

from test1 import a
from test1 import b
# import test1 两种导包方式供参考
def c():
    print("这是函数c")

def d():
    print("这是函数d")

#两种调用方式供参考
# c()
# d()
# print(__name__)  
if __name__ == '__main__':
    c()
    d()
    print(__name__)

如果导入未更改的test1,打印结果为:

这是函数a
这是函数b
test1
这是函数c
这是函数d
__main__

如果导入更改后的test1,打印结果为:

这是函数c
这是函数d
__main__

两次结果差异的原理:
两个py文件(test1.py和test2.py)都包含内置的变量__name__,当分别单独运行py文件时,__name__都等于__main__这个字符值。

如果将test1导入到test2,运行test2时,test1的__name__为‘test1’,等于自己的模块名。

此时test2的__name__为仍然为__main__。

进而当运行更改后的test1时,只打印__name__ == 'main’的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值