if __name__ == '__main__'的理解

转载

Python代码和看Python代码时,我们常常可以看到这样的代码:

def main():
    ...
if __name__ == '__main__':
    mian()
name

如果是放在Modules模块中,就表示是模块的名字;

如果是放在Classs类中,就表示类的名字;

main的含义

python代码,是可以直接一行行写出来,然后去运行,更多的Python代码,是写成更加通用的,可以被调用的,可以重复利用的,模块的形式;所以都是写在对应的函数里面的。
**模块第一次被导出(import)后,系统会自动为其创建一个域名空间(namespace);
(模块,都是有自己的名字的)此处的脚本的主模块的名字,始终都叫做main。**

详细解释if name == ‘main‘:

mymath.py

运行结果:

将自己写的有条理可复用的函数,放在一个专门的文件中,被别人调用
模板文件 mymath.py

然后别的python文件__name___and___main__.py中,导入此mymath模块,然后使用其square函数:

结果

可以看到出现了用于在mymath.py中的打印结果
test: square(42) == 1764

明显的,我作为模块调用者是不想看到的

我们希望:
模块mymath.py本身,希望有自己的相关的调试的代码
但是又不希望在被别的,本模块的调用者,所执行到,所看到

所以修改mymath.py

mymath.py本身,自己运行,调试,验证自己的函数square执行的是否正确:

__name___and___main__.py,在import mymath的时候,也不会看到对应的代码执行的结果了:

其中的__main__,就是:
脚本自己去运行的话,对应的模块名,始终叫做__main__,mymath.py中的name就是所在模块的名字

如果被当做一个模块被别人调用的时候,对应的模块mymath.py的模块名,就是mymath,
不是__main__了,
只有在直接引用的时候,在自己的模板中 mymath.py = __main__
作为模板,被程序导入时,模板名就是本身的文件名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值