如何解释python中的 __name__ = "__main__" ?“Make a script both importable and executable”即让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
__name__ 解释为:如果是存在e于Moudule模块中,就表示是模块的名字;如果是存在于Class类中,就表示该类的名字。
__main__ 解释为:模块第一次被导出(import)后,系统会自动为其创建一个域名空间(namespace);(模块,都有自己的名字)此处的脚本的主模块的名字,始终都叫做__main__。
举例说明__name__ = "__main__" 实际应用中的做用
比如:程序开发中难免划分2部分人员,1部分专门写公共接口,别1部分写业务逻辑并会使用公共接口。那么,A写接口,B写业务逻辑
接口 square.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
[整理]python中的__name__和__main__的意思
Author: baidonglin
"""
def square(x):
return x * x
print 'this is square.py,result:', square(4)
测试接口:python square.py
结果:this is square.py,result: 16
业务逻辑 mymath.py
#! /usr/bin/env python
# -*- encoding = utf-8 -*-
import square
print 'this is mymath.py, result:', square.square(3)
运行:python mymath.py
结果:this is square.py,result: 16
this is mymath.py, result: 9
那么问题来了,接口是A写的且A不希望自己的调试code被B看到,怎么办?
这个时间__name__="__main__"派上用处了,
square.py 修改成这样
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
[整理]python中的__name__和__main__的意思
Author: baidonglin
"""
def square(x):
return x * x
if __name__="__main__":
print 'this is square.py,result:', square(4)
测试接口:python square.py
结果:this is square.py,result: 16
运行:python mymath.py
结果:this is mymath.py, result: 9
(完)