Python if __name__ == ‘__main__’ 之理解

目录

1、__name__ 变量

2、模块导入

3、程序入口


        学习 Python 编程时,经常会遇到下述代码:

if __name__ == '__main__':
    main()

        但似乎有它没它,脚本本身也能正常运行。这未免丈二和尚,摸不着头脑,何必多此一举呢?

        话说存在的就是合理的,就让我们看一下这句代码的作用和意义。

        首先理解 __name__ (前后均为两条下划线)变量的含义。

1、__name__ 变量

        __name__ 为 Python 的内置变量,可为 dir(__builtins__) 函数所查看,其数据类型为字符串。

        以当前目录 testA.py 文件为例,其代码为:

        运行该文件,结果为:

        可见,对于当前文件,其 __name__ == '__main__',也即 if __name__ == '__main__' 结果为 True。

2、模块导入

        Python 编程时,经常在当前文件顶端导入其它模块,只要运行到该 import 语句,导入模块的代码便会被执行。

        同样以当前目录 testB.py 文件为例,其代码为:

         运行该文件,结果为:

        可见模块 testA 被导入后运行的结果为模块名,而非 __name__ 变量值 __main__。

        为进一步说明问题,将 testA.py 代码修改为:

        分别运行 testA.py 和 testB.py,结果为:

        可见,运行 testB 时 testA 并未被执行,也即对testA 而言,if __name__ == '__main__' 结果为 False。

        综上可见,if __name__ == '__main__': 判断语句的主要作用就是:

  • 直接运行文件时,结果为 True,当前模块被执行
  • 导入运行文件时,结果为 False,当前模块不被执行

        妥妥非请勿扰的赶脚……

3、程序入口

        此外,与 Java、C、C++ 等汇编语言不同,Python 作为解释型脚本语言,执行时无需将所有代码先行编译成中间代码,而是自模块顶行开始,逐行进行翻译执行,并不需要统一的 main() 函数作为程序的入口。因此,从某种意义上讲,if __name__ == ’__main__': 就像一个标志,告诉你,代码入口在此。一定意义上也有利于规范代码写作吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香饽々

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值