我有以下代码:
def subStringMatchExact(target,key,matches=(),base=0):
if find(target,key) != -1:
matches += (find(target,key)+base,)
base += find(target,key)+len(key)
subStringMatchExact(target[find(target,key)+len(key):],key,matches,base)
else:
print matches
return matches
当我运行该功能时,例如subStringMatchExact('abcdabcdababcdedakcdobcdabcd','abc')
,print matches
行将使我的解释器打印(0,4,10,24)
,这是正确的。但是,行return matches
会返回值None
。
同样,当我致电print subStringMatchExact('abcdabcdababcdedakcdobcdabcd','abc')
时,解释程序也会提供None
。
任何人都可以帮我纠正这个吗?
答案 0 :(得分:3)
我认为您打算在第5行返回递归值。实际上,它只是调用它然后继续到方法的结尾,返回None
。因此,您只需插入return
关键字。
def subStringMatchExact(target,key,matches=(),base=0):
if find(target,key) != -1:
matches += (find(target,key)+base,)
base += find(target,key)+len(key)
return subStringMatchExact(target[find(target,key)+len(key):],key,matches,base)
else:
print matches
return matches
答案 1 :(得分:2)
我认为你的意思是if
条款末尾的陈述:
return subStringMatchExact(...)
return
语句下面的print
语句确实有效 - 它成功地将链路上的答案发送到调用它的函数的实例 - 但随后是调用函数的副本扔掉它。如果return
语句的第一个子句中没有if
,则会返回None
。