【发布时间】:2013-09-01 00:21:51
【问题描述】:
下面的方法在一个字符串中查找它是否有任何 python 方法。
def there_is_a_call( string ):
return string.find('(') > -1
def find_and_remove_functions( string , found_functions ):
if not there_is_a_call( string ):
print( found_functions )
return found_functions
else:
function_end = string.find('(')
function_string = string[:function_end][::-1]
if function_string.find('.') > -1 :
index = function_string.find('.')
elif function_string.find(' ') > -1:
index = function_string.find(' ')
else:
index = len(function_string) - 1
func_name = function_string[ : index + 1 ][::-1] + '()'
new_list = found_functions
new_list.append( func_name )
find_and_remove_functions( string[ function_end + 1: ], found_functions )
所以我尝试看看它是否有效,然后会发生这种情况;
>>>> a = find_and_remove_functions( 'func() and some more()' , [] )
['func()', ' more()']
>>>> print(a)
None
为什么在打印found_functions 时,return 语句没有返回任何内容?
【问题讨论】:
-
return语句 is 返回一些东西……但只有在if为真时才会执行。否则,您正在运行其他代码,它不会return任何东西。它确实递归地调用了该函数,但它对该递归调用的结果不做任何事情。通常,递归情况的最后一行是return,它返回递归调用的值,或围绕它构建的表达式。
标签: python python-2.7 recursion return