Python 为什么要 if __name__ == “__main__“:
创始人
2024-05-26 08:34:14

各位读者,你们知道以下两个Python文件有什么区别吗?

main1.py

def main():output = 'Hello'print(output)if __name__ == "__main__":main()

main2.py

output = 'Hello'
print(output)

当我们直接运行 main1.py 与 main2.py 的时候,程序都会输出 Hello 字符。虽然他们两个的输出结果都一样,但其实还是存在一些微小的差距。

差别1:变量的scope

main1.py 的变量 output 是定义在 mian() 函数里的,因此变量 output 的 scope 也只局限在函数里而已。

反之,main2.py 的变量 output 是直接定义在全局里的,也就是说如果有import的其他Python文件也在全局里定义了一个叫做 output 的变量,那么 mian2.py 里的 output 就有可能覆盖了之前定义的 output 变量。

比较好的做法是尽量将变量的scope变得尽可能小,如无必要的话尽量不要用全局变量。

差别2:import时执行与否

main1.py 只有当其是第一个被执行的Python文件时,才会输出 Hello 字符。原因是它有一个 if 逻辑做判断。如果我们直接执行 main1.py ,那么 if name == “main”: 就会返回 True,然后接下来下面的代码才会接着被执行。

然而,除了当我们直接执行 main2.py 也会输出 Hello 字符之外,当其他文件 import main2.py 时也会输出 Hello 字符。当我们想要避免 import 文件时不小心执行了文件里的代码,则应该使用 if name == “main”: 。

额外好处:一目了然

使用 if name == “main”: 还有一个额外好处,就是当其他人在看你的代码时,当他们看见 if name == “main”: 时,他们就会知道代码作者的用意是希望用户直接执行这个文件,这个文件应该作为第一个被执行的文件。

David目前能想到的点就只有这些。如果有遗漏或是错误的地方,请大家指正与包涵。

相关内容

热门资讯

demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...