Python之__name__, __main__

1 起因

程序看多了,发现定义类,函数之后,执行是都与if __name__ == "__main__",百撕不得qi解,一怒之下,查了资料,总结如下.

2 从__name__说起

2.1 小例-1

  • Demo

新建文件test.py

def output_name():
	print("Name: {}".format("xindaqi"))
output_name()
print(__name__)
  • Result
xindaqi
__main__
  • Analysis
    在当前*.py文件中,__name__值为__main__

2.2 小例-2

  • Demo
    test.py
def output_name():
	print("Name: {}".format("xindaqi"))
output_name()
print(__name__)

main_test.py

import test
def output_job():
	print("Job: {}".format("AI Engineer"))
output_job()
print(__name__)
  • Result
Name: xindaqi
test
Job: AI Engineer
__main__
  • Analysis
  1. 通过import导入*.py文件,如test.py导入到main_test.py,执行main_test.py,输出的结果包括文件test.py,main_test.py的输出;
  2. main_test.py中输出test.py__name__test.py的文件(模块)名test;

这就催生了if __name__ == "__main__"

  1. 每一个模块或*.py文件都有__name__,在本模块中,__name____main__,被引入到其他模块中,__name__为模块名.
  2. 为使每次只执行主文件中的函数,可用__name__进行函数隔离.

2.3 小例-3

  • Demo
    test.py
def output_name():
	print("Name: {}".format("xindaqi"))
# 隔离函数执行
if __name__ == "__main__":
	output_name()
	print(__name__)

main_test.py

import test
def output_job():
	print("Job: {}".format("AI Engineer"))
output_job()
print(__name__)
  • Result
Job: AI Engineer
__main__
  • Analysis
  1. test.py中,使用了判断__name__决定是否执行函数,因为在main_test.py中,__name__值为__main__,所以只执行了main_test.py中的函数;
  2. __name__隔离了被引用模块的函数执行;

3 总结

  1. __name__*.py的内置函数,即每个文件都有__name__,在本文件中__name__值为__main__,在引入的文件中,__name__为模块名称;
  2. 通过if __name__ == "__main__"隔离被引用模块的函数执行,只引入模块;

[参考文献]
[1]http://blog.konghy.cn/2017/04/24/python-entry-program/


更新ing
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天然玩家

坚持才能做到极致

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

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

打赏作者

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

抵扣说明:

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

余额充值