Mam niektóre kodu Pythona, który zasadniczo wygląda następująco:Python: Funkcja zawsze zwraca None
my_start_list = ...
def process (my_list):
#do some stuff
if len(my_list) > 1:
process(my_list)
else:
print(my_list)
return my_list
print(process(my_start_list))
Najdziwniejsze jest: drukowania (my_list) wypisuje poprawnej zawartości. Jednak druga instrukcja print wyświetlająca wartość zwracaną przez funkcję zawsze drukuje "None". Nawet jeśli zastąpię zwykłą instrukcję return z return ("abc"), to nadal jest Brak.
Ponieważ treść zmiennej wydaje się być poprawna w jednym wierszu przed instrukcją return, nie wiem, gdzie rozpocząć debugowanie. Czy są jakieś typowe problemy, które mogą powodować takie problemy?
użyć 'return process (my_list)' podczas wywoływania go rekurencyjnie. –
@NPE Zakładam, że '#do some stuff' zawiera modyfikację listy w jakiś sposób; inaczej masz rację; to powinno się powtarzać w nieskończoność. –
pokrewne: http://stackoverflow.com/questions/11097822/weird-function-return-value –