Python Language
Funktionell programmering i Python
Sök…
Introduktion
Funktionell programmering sönderdelar ett problem till en uppsättning funktioner. Idealt, funktioner tar bara ingångar och producerar utgångar, och har inget internt tillstånd som påverkar utgången som produceras för en given ingång. Nedan är funktionella tekniker som är gemensamma för många språk: till exempel lambda, karta, minska.
Lambdafunktion
En anonym, inlined funktion definierad med lambda. Parametrarna för lambda definieras till vänster om kolon. Funktionskroppen definieras till höger om tjocktarmen. Resultatet av att man kör funktionskroppen returneras (implicit).
s=lambda x:x*x
s(2) =>4
Kartfunktion
Karta tar en funktion och en samling av objekt. Det skapar en ny, tom samling, kör funktionen på varje objekt i den ursprungliga samlingen och sätter in varje returvärde i den nya samlingen. Den returnerar den nya kollektionen.
Detta är en enkel karta som tar en lista med namn och returnerar en lista över längden på dessa namn:
name_lengths = map(len, ["Mary", "Isla", "Sam"])
print(name_lengths) =>[4, 4, 3]
Minska funktionen
Minska tar en funktion och en samling artiklar. Det returnerar ett värde som skapas genom att kombinera objekten.
Detta är en enkel minskning. Det returnerar summan av alla objekt i samlingen.
total = reduce(lambda a, x: a + x, [0, 1, 2, 3, 4])
print(total) =>10
Filterfunktion
Filter tar en funktion och en samling. Det returnerar en samling av varje objekt som funktionen returnerade True.
arr=[1,2,3,4,5,6]
[i for i in filter(lambda x:x>4,arr)] # outputs[5,6]