python入门之模块调用与if __name__ == '__main__':语句

在Python中,导入模块时,实际上会把被导入的模块执行一遍,如下: 
先看被调用的模块:
test.py:
def haha():
    print("哈哈")
haha()

再看主程序
main.py:
import test
print("一棵大树")

主程序执行结果是:
哈哈
一棵大树
那怎么才能只是单纯调用而不执行被调用模块的代码呢?要想被调用模块代码不被执行,前提得知道变量__name__是什么意思,简单来说就是,如果该模块不被别的程序导入的话,__name__的值就是” __main__“,如果当此模块被别的程序导入的话,那么这个被导入时,模块内的__name__值就是文件的名字(如:test(不带.py)),如下:
test_1.py:
def haha():
    print("哈哈")
haha()
print(__name__)

test_1.py执行结果为:
哈哈
__main__
如果test_1被test_2导入引用的话,如:
test_2:
import test_1
print("一棵大树")

test_2的运行结果为:
哈哈
test_1
一棵大树
所以我们在被调用的模块中test_1.py中,可执行的代码前加上这么一句判断,if __name__ == '__main__':,被调用时,可执行的代码就不会被执行了!

test_1.py:
def haha():
    print("哈哈")
if __name__ == '__main__':
haha()
print(__name__)

这样在被调用时,就不会执行:haha()和print(__name__)这两条可执行代码。
而在自身单独运行时(即__name__ == '__main__')时,会执行haha()和print(__name__)这两条可执行代码。

参考资料:https://blog.youkuaiyun.com/haijiege/article/details/85007543

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值