python脚本在开发的时候,需要经常调试,怎样比较方便的检查编写的函数是否正常呢?当然,最好调试脚本保留着,以后维护时说不定还用呢。
python中有个很好玩的东东“__name__”,这个东东在执行单个的py文件时值为默认的“__main__”,如果被调用就变为文件名(区扩展名py的)。看个例子。
创建两个python文件:a.py和b.py。a.py中使用__name__调用自身文件中的函数fun_a1;b.py中引入a,并且调用a.py中的函数fun_a1。
a.py代码如下:
#!/usr/bin/python
#-*-coding:utf-8-*-
# 参数flg标记调用来源,本文件内1,外部调用2
def fun_a1(flg):
print "fun_a1,_name_:%s,flg:%d"%(<span style="background-color: rgb(255, 255, 51);">__name__</span>,flg)
# 以下是调试用的
if __name__=='__main__':
fun_a1(1)
b.py代码如下:
#!/usr/bin/python
#-*-coding:utf-8-*-
import a
if __name__=='__main__':
a.fun_a1(2)
运行a.py,结果如下:
[root@localhost test_name_]# ./a.py
fun_a1,_name_:<span style="background-color: rgb(255, 255, 51);">__main__</span>,flg:<span style="color:#ff0000;">1</span>
那么运行b.py,输出信息会是什么呢?“...,flg:1”和“...,flg:2”?其实运行b.py时,会import“a.py”,
这种情况下a.py中的“__name__”就不是“__main__”了,“...,flg:1”也就不会输出。看下结果吧:
[root@localhost test_name_]# ./b.py
fun_a1,_name_:<span style="background-color: rgb(255, 255, 0);">a</span>,flg:<span style="color:#ff0000;">2</span>
[root@localhost test_name_]#
在py文件编写时使用“if __name__='__main__'”进行调试,既可以随时调试(不需要在函数中改逻辑或增加额外的输出信息),也不影响函数的外部调用。