下面的方法查找字符串以查找它是否有任何python方法。return語句在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
爲什麼return語句不返回任何東西,而found_functions
做得到印刷?
的'return'聲明_is_返回的東西......但如果'if'不錯,唯一的執行。否則,你正在運行其他代碼,它不會返回任何東西。它遞歸地調用該函數,但它對遞歸調用的結果不起作用。通常情況下,遞歸情況下的最後一行是一個返回值,它返回遞歸調用的值或者圍繞它構建的表達式。 – abarnert