Jedną z rzeczy, która jest naprawdę ważna dla tego pytania (i odpowiedzi) jest: Co to do cholery jest funkcjonalne programowanie i jakie są najważniejsze jego właściwości. Spróbuję przedstawić mój pogląd na to:
Programowanie funkcjonalne przypomina pisanie matematyki na tablicy. Kiedy piszesz równania na tablicy, nie myślisz o poleceniu wykonania. Nie ma (zazwyczaj) mutacji. Nie wrócisz pojutrze i nie spojrzysz na to, a kiedy ponownie wykonasz obliczenia, uzyskasz inny wynik (a może, jeśli napijesz się świeżej kawy :)). Zasadniczo to, co jest na tablicy, a odpowiedź już tam była, kiedy zacząłeś spisywać rzeczy, po prostu nie zdawałeś sobie sprawy, co to jest.
Programowanie funkcjonalne jest bardzo podobne; nie zmieniasz rzeczy, po prostu oceniasz równanie (lub w tym przypadku „program”) i zastanawiasz się, jaka jest odpowiedź. Program jest nadal niezmodyfikowany. To samo z danymi.
Za najważniejsze cechy programowania funkcjonalnego uznałbym: a) przejrzystość referencyjną - jeśli ocenisz to samo zdanie w innym miejscu i czasie, ale przy tych samych wartościach zmiennych, będzie to nadal oznaczać to samo. b) brak efektu ubocznego - bez względu na to, jak długo patrzysz na tablicę, równanie, na które patrzy inny facet, nie zmieni się przypadkowo. c) funkcje też są wartościami. które można przekazywać i stosować z innymi zmiennymi lub do nich. d) składanie funkcji, możesz zrobić h = g · f, a tym samym zdefiniować nową funkcję h (..), która jest równoważna wywołaniu g (f (..)).
Ta lista jest w mojej kolejności według priorytetów, więc przejrzystość referencyjna jest najważniejsza, a po niej nie występują żadne skutki uboczne.
Teraz, jeśli przejdziesz przez python i sprawdzisz, jak dobrze język i biblioteki obsługują i gwarantują te aspekty - jesteś na dobrej drodze, aby odpowiedzieć na swoje własne pytanie.