就是这么一段程序
---
import logging
def calcPath(id, path):
id = id - 1
if(id == 0):
logging.warn(('=0', id, path))
return path
else:
logging.warn(('!=0', id, path))
path = calcPath(id, str(id) + '.' + path)
# return path
# 函数外
num = 3
print calcPath(num, str(num))
---
在 else 里那个 return path 有注释(即如上原始代码)的情况下执行两次
返回这样的两次结果
第一次
WARNING:root:('!=0', 2, '3')
None
WARNING:root:('!=0', 1, '2.3')
WARNING:root:('=0', 0, '1.2.3')
第二次
WARNING:root:('!=0', 2, '3')
WARNING:root:('!=0', 1, '2.3')
WARNING:root:('=0', 0, '1.2.3')
None
去掉注释后执行两次
第一次
WARNING:root:('!=0', 2, '3')
1.2.3
WARNING:root:('!=0', 1, '2.3')
WARNING:root:('=0', 0, '1.2.3')
第二次
WARNING:root:('!=0', 2, '3')
1.2.3
WARNING:root:('!=0', 1, '2.3')
WARNING:root:('=0', 0, '1.2.3')
有两个疑问:
为什么最后的输出反而比递归里的输出要早?
为什么 else 里没有 return 会拿到 None?