Python 确定模块是被别的模块加载还是直接
1个回答
展开全部
每一个python脚本文件都可以当成是一个模块,模块以磁盘文件的形式存在,模块中可以是一段直接执行的脚本,也可以定义一些类,函数,让别的模块导入,调用,类似库函数。
一块模块的组织建议如下:
#/usr/bin/env python #起始行
"This is a test module" #模块文档,可以通过 模块名.__doc__ 访问
import sys #模块导入
import os
debug=True #全局变量定义
class Test(object): #类定义
"Class Test"
pass
def test(): #函数定义
"test function"
t=Test()
if debug:
print "ran test()"
if __name__ =='__main__': #主程序
test()
模块中的定义部分,比如全局变量定义、类定义、函数定义等,执行不会有太大影响,但主程序代码部分有时我们想只让它在模块直接执行的时候才执行,被其它模块加载时就不执行。
可以通过系统变量__name__(注意前后都是两个下划线)的值来区分这两种情况。
如果模块是被其它模块导入的,__name__的值是模块的名字,主动执行时它的值就是字符串 ' __main__ ’ 。
if __name__ == '__main__':
main()
一块模块的组织建议如下:
#/usr/bin/env python #起始行
"This is a test module" #模块文档,可以通过 模块名.__doc__ 访问
import sys #模块导入
import os
debug=True #全局变量定义
class Test(object): #类定义
"Class Test"
pass
def test(): #函数定义
"test function"
t=Test()
if debug:
print "ran test()"
if __name__ =='__main__': #主程序
test()
模块中的定义部分,比如全局变量定义、类定义、函数定义等,执行不会有太大影响,但主程序代码部分有时我们想只让它在模块直接执行的时候才执行,被其它模块加载时就不执行。
可以通过系统变量__name__(注意前后都是两个下划线)的值来区分这两种情况。
如果模块是被其它模块导入的,__name__的值是模块的名字,主动执行时它的值就是字符串 ' __main__ ’ 。
if __name__ == '__main__':
main()
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询