python:_name_属性

本文介绍了Python中的__name__属性,当模块作为程序直接运行时,其值为`__main__`,而作为模块导入时,值为模块名。通过检查__name__,可以控制代码只在直接运行时执行特定部分,避免在导入时执行。示例中展示了如何利用这一特性来防止在导入时执行不需要的测试代码。
摘要由CSDN通过智能技术生成

__name__属性
#每一个python模块运行时都会有一个__name__属性,当作为模块导入时,则其__name__属性的值会被自动设置为模块名,如果作为程序直接运行是,其__name__属性自动设置为__main__
在python中一个.py文件就是一个模块.如果在同一个包demo.py文件想用demos.py文件那就可以将demos.py作为模块导入到demo.py中就可以使用demos中的函数,
如果你发现在同一个包下导入自定模块报错解决办法:点包名右键单击–>Mak Directory --> soarces Root 即可
先创建一个demo3.py

def add(a,b):
    return (a + b)
print(f'测试:{add(1,1)}')
print(f'__name__={__name__}')#name前后都是两个下划线

如果单独运行这个程序结果如下:
测试:2
name=main
我们会发现我们并没有对__name__赋值但取出现__main__所以这是系统自动赋值的,作为程序直接运行是,其__name__属性自动设置为__main__*

在创建一个demo4文件在demo4中导入demo3

import demo3
print(f'结果:{demo3.add(1,6)}')

结果为:
测试:2
name=demo3
结果:7
我们发现在这里不仅打印出了测试,而且还打印出了__name__这些都是demo3的所以在demo3的__name__属性就自动成了自己作为模块导入其他文件时自己的名字
我们也会发现我们是要得到结果,但不想得到测试的结果,所以根据__name__属性在两种境况下的值不同可以让测试在导入文件中不会被调用
修改demo3

def add(a,b):
    return (a + b)
if __name__ == '__main__':
    print(f'测试:{add(1,1)}')

在运行demo4
结果
结果:7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值