The methods below look in a string to find if it has any python methods.
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 )
So I try to see if it works and then this happens;
>>>> a = find_and_remove_functions( 'func() and some more()' , [] )
['func()', ' more()']
>>>> print(a)
None
Why is the return statement not returning anything while the found_functions do get printed?
returnstatement is returning something… but that's only executed if theifis true. Otherwise, you're running the other code, which doesn'treturnanything. it does recursively call the function, but it doesn't do anything with the result of that recursive call. Usually, the last line in the recursive case is areturnthat returns the value of the recursive call, or an expression built around it.