浅析python中__name__=__main__的作⽤
很多新⼿刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新⼿⼀开始学习的时候都⽐较疑惑,python 中__name__ = '__main__' 的作⽤,到底⼲嘛的?
有句话经典的概括了这段代码的意义:
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导⼊到别的模块中⽤,另外该模块⾃⼰也可执⾏。
这句话,可能⼀开始听的还不是很懂。下⾯举例说明:
先写⼀个模块:
#module.py
def main():
print "we are in %s"%__name__
if __name__ == '__main__':
python新手函数
main()
这个函数定义了⼀个main函数,我们执⾏⼀下该py⽂件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执⾏了,调⽤了main():
但是如果我们从另我⼀个模块导⼊该模块,并调⽤⼀次main()函数会是怎样的结果呢?
#anothermodle.py
from module import main
main()
其执⾏的结果是:we are in module
但是没有显⽰”we are in __main__“,也就是说模块__name__ = '__main__' 下⾯的函数没有执⾏。
这样既可以让“模块”⽂件运⾏,也可以被其他模块引⼊,⽽且不会执⾏函数2次。这才是关键。
总结⼀下:
如果我们是直接执⾏某个.py⽂件的时候,该⽂件中那么”__name__ == '__main__'“是True,但是我们如果从另外⼀个.py⽂件通过import导⼊该⽂件的时候,这时__name__的值就是我们这个py⽂件的名字⽽不是__main__。
这个功能还有⼀个⽤处:调试代码的时候,在”if __name__ == '__main__'“中加⼊⼀些我们的调试代码,我们可以让外部模块调⽤的时候不执⾏我们的调试代码,但是如果我们想排查问题的时候,直接执⾏该模块⽂件,调试代码能够正常运⾏!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论