return не возвращает ничего в рекурсии python

Нижеприведенные методы выглядят в строке, чтобы определить, есть ли у нее какие-либо методы 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 ) 

Поэтому я пытаюсь понять, работает ли это, и тогда это происходит;

  • Что это за "и" заявление, действительно делающее в обратном?
  • Печать возвращаемого значения в функции
  • Почему моя функция возвращает None?
  • python возвращается из функции
  • Оператор возврата класса не печатает какой-либо вывод
  • Разница между возвратами и печатью в python?
  •  >>>> a = find_and_remove_functions( 'func() and some more()' , [] ) ['func()', ' more()'] >>>> print(a) None 

    Почему оператор return ничего не возвращает, пока found_functions печатаются?

  • Оператор возврата класса не печатает какой-либо вывод
  • Парадигма рекурсивной функции в Python
  • Рекурсия с использованием урожая
  • Разбор файла Python: сборка дерева из текстового файла
  • Как найти общие элементы в списке списков?
  • Башни Ханоя Python - понимание рекурсии
  • 2 Solutions collect form web for “return не возвращает ничего в рекурсии python”

    Вот:

     find_and_remove_functions( string[ function_end + 1: ], found_functions ) 

    должно быть

     return find_and_remove_functions( string[ function_end + 1: ], found_functions ) 

    Здесь есть еще несколько объяснений.

    a = find_and_remove_functions( 'func() and some more()' , [] ) печатает список, потому что выполняется строка print( found_functions ) .

    a присваивается результат find_and_remove_functions и, поскольку функция не возвращает ничего после набора рекурсивных вызовов (см., что ваша else часть не имеет return ), ей присваивается значение None .

    Вот простой пример того, что происходит:

     >>> def test(): ... print "test" ... >>> a = test() test >>> print(a) None >>> a is None True 
    Python - лучший язык программирования в мире.