博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python __name__ = '__main__' 的作用
阅读量:5888 次
发布时间:2019-06-19

本文共 1033 字,大约阅读时间需要 3 分钟。

很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = '__main__' 的作用,到底干嘛的?

有句话经典的概括了这段代码的意义:

“Make a script both importable and executable”

意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行

这句话,可能一开始听的还不是很懂。下面举例说明:

先写一个模块:

#module.pydef main():  print "we are in %s"%__name__if __name__ == '__main__':  main()

这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():

但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?

#anothermodle.pyfrom module import mainmain()

其执行的结果是:we are in module

但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

 

总结一下:

这是特殊的与模块相关的技巧,可把文件作为成模块导入,并以独立式程序的形式运行。每个模块都有个名为__name__的内置属性,python会自动设置该属性:

a、如果文件是以顶层程序文件执行,在启动时,__name__就会设置为字符串"__main__";

b、如果文件被导入,__name__就会改设成客户端所了解的模块名。

结果就是模块可以检测自己的__name__,来确定它是在执行还是在导入。这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

转载于:https://www.cnblogs.com/DswCnblog/p/6018584.html

你可能感兴趣的文章
数据链路层
查看>>
FactoryMethod工厂方法模式(创建型模式)
查看>>
Java面向对象编程概述
查看>>
ios中NSObject分类(2)
查看>>
vi(vim)快速入门 常用指令
查看>>
我和python的初相识
查看>>
window linux 路径写法(转载)
查看>>
mysql 字符串字段中查找非ascii字符
查看>>
日常开发常用网站(持续更新……)
查看>>
7-8 哈利·波特的考试(25 分)(图的最短路径Floyd算法)
查看>>
《高老头》
查看>>
Javascript 弹出窗口总结(收集)
查看>>
ERP实施顾问,请找准自己的定位
查看>>
Android studio 3.1.2报错,no target device found
查看>>
Tarjan 割边(桥)
查看>>
Dubbo服务,后台管理,监控中心搭建的简单实践
查看>>
poj 1321 棋盘问题
查看>>
Python基本图形绘制
查看>>
捷径 - The certain shortcut
查看>>
windows与windows之间传输文件
查看>>