Dieser Artikel bietet Ihnen eine detaillierte Analyse (Codebeispiel) der funktionalen Programmierung in Python. Ich hoffe, dass er für Freunde hilfreich ist.
Funktionale Programmierung, funktionale Programmierung. Python bietet teilweise Unterstützung für die funktionale Programmierung. Bei der rein funktionalen Programmierung ist für jede Funktion die Ausgabe sicher, solange die Eingabe sicher ist, und es kann gesagt werden, dass sie keine Nebenwirkungen hat.
Wir wissen, dass die Berechnungsergebnisse von Funktionen sind kann Variablen zugewiesen werden, z. B. x = abs(-5)
.
Ähnlich können Variablen auch auf Funktionen verweisen, wie zum Beispiel f = abs
.
Wenn eine Variable auf eine Funktion zeigt, ist das Ergebnis, das durch den direkten Aufruf von abs(x)
und die Ausführung von f(x)
zurückgegeben wird, genau das gleiche.
Wir können den Funktionsnamen auch als Variable betrachten, wie zum Beispiel die Funktion abs()
. Führen Sie die Anweisung abs=-5
aus und rufen Sie dann abs(-5)
auf. Es wird ein Fehler gemeldet, da die Variable abs
zu diesem Zeitpunkt nicht mehr auf die Absolutwertfunktion, sondern auf eine Ganzzahl -5 zeigt.
Da Variablen auf Funktionen verweisen können und Funktionen auch als Variablen fungieren können, kann eine Funktion eine andere Funktion als eigene Formparameter erhalten, das heißt, die Implementierung von Funktionen höherer Ordnung. Zum Beispiel:
>>> def add(x , y , f ): # 把函数作为参数传入。 ... return f(x) + f(y) >>> add (-5,-2,abs) 7
Syntax: map(func,seq), empfängt zwei Parameter, einer ist die Funktion func und der andere ist ein iterierbares Objekt.
Funktion: Schleife die übergebene Funktion func für jedes Element der seq-Sequenz und gebe ein neues iterierbares Objekt zurück.
Hinweis : Die Funktion map() gibt ein <map object>
zurück, und wir können die Funktion list() verwenden, um die erhaltenen Ergebnisse in Form eines zurückzugeben Liste.
Zum Beispiel: Verwenden Sie map(), um f(x)=x*x zu implementieren
>>> def f(x): ... return x*x ... >>> map(f,[1,2,3,4,5]) <map object at 0x0327F670> >>> list(map(f,[1,2,3,4,5])) # 传入的函数f作用于序列的每个元素调并用list() [1, 4, 9, 16, 25]
Natürlich können auch andere Methoden verwendet werden:
exp1 :list( map((lambda x:x*x),[1,2,3,4,5]))
exp2: [x*x for x in [1,2,3,4,5]]
Syntax: reduce(func,list)
, muss zwei Parameter akzeptieren.
Aktion: Wenden Sie die Funktion func
auf die list
-Sequenz[x1,x2,x3,...]
an. Nehmen Sie die ersten beiden Elemente der Sequenz x1
und x2
heraus, wenden Sie func
an, um einen einzelnen Wert zu erhalten, z. B. a
, und kombinieren Sie dann a
mit dem nächsten Element der Sequenz x3
func
Vorgang ausführen und wiederholen. Der Effekt entspricht reduce(f,x1,x2,x3)=f(f(x1,x2),x3)
Hinweis : Um reduce()
zu verwenden, müssen Sie das Modul from functools import reduce
Syntax: , erhält eine „Filter“-Funktion und eine Sequenz. Zurückgegeben wird ein filter(func,[序列])
iterierbares Objekt. Iterator
Funktion: Filtern Sie die Sequenz gemäß den -Regeln, func
wenden Sie die übergebene Funktion filter()
entsprechend auf jedes Element an und geben Sie dann The zurück Der Wert func
oderTrue
wird als entsprechendes Element von False
beibehalten. True
Hinweis : Ähnlich wie gibt map()
ein iterierbares Objekt zurück. Sie müssen also filter()
verwenden, um die erhaltenen Ergebnisse anzuzeigen und Typ. list()
list
>>> def is_odd(n): ... return n % 2 == 1 # 返回0(false) 或1(True) ... >>> list( filter(is_odd,[1,2,3,4,5,6,7,8,9]) ) [1, 3, 5, 7, 9]
Das obige ist der detaillierte Inhalt vonDetaillierte Analyse der funktionalen Python-Programmierung (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!