“ if __name__ == ‘__main__‘ “到底有什么用?

Python中的" if __name__ == ‘__main__’ "

"if __name__ == __main__"这行代码主要的作用是调试某个模块的正确性。

  • script1.py
>>>print(f'The __name__ from script1 is "{__name__}"')
The __name__ from script1 is "__main__"

一般情况下,当一个py文件运行时,解释器解释代码,并且把 '__main__' 赋值给 __name__

  • script2.py
>>>import script1  # The print statement gets executed upon import
>>>print(f'The __name__ from script2 is "{__name__}"')

The __name__ from script1 is "script1"
The __name__ from script2 is "__main__"

我们可以看到,导入script1.py文件时,script1.py文件中的打印输出语句,就会文件名'script1' 赋值给 __name__ ,而解释器就会把当前'__main__' 赋值给 __name__ 。既然__name__的值不同,我们可以利用 if条件语句来运行不同的代码。

  • script3.py
def add(a, b):
    return a+b

if __name__ == "__main__":
    print(add(2, 3)

#输出:
5          

当我们运行这个 script3.py文件时,__name__关键字的值肯定是'__main__',因此也会进入if条件判断语句执行后面的代码。

  • script4.py
import script3

print(f"{script3.__name__}")

#输出:
script3

当你在script4.py文件导入 script3 模块时,运行script4.py文件,script3.py文件中的 if判断语句下的 print(add(2,3))是不会执行的。因为此时script3.py文件__name__的值是script3,而不是'__main__'

  • 一次测试案例
  • __main__.py
from src.add import add
from src.sub import sub
def who_are_you():
    print("Who are you")
who_are_you()

在当前目录下创建一个名为src的文件夹,里面创建add.py文件和sub.py文件

  • add.py
def add():
    print("这是一个加法")
add()
  • sub.py
def sub():
    print("这是一个减法")
sub()

当我们运行__main__.py文件时

#输出:
这是一个加法
这是一个减法
Who are you

会发现分别输出了当前函数和其他两个函数的print内容。

如果在sub.py中添加 if __name__ == '__main__'

def sub():
    print("这是一个减法")
if __name__ == '__main__':
	sub()

再次执行__main__.py文件时

#输出:
这是一个加法
Who are you

从结果可以看到,并没有调用sub.py文件。这种情况与script3.py文件 和 script4.py文件 的情况是一样的。
总结:if __name__ == '__main__'主要是用来调试模块中代码的正确性。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值