Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Analyse der funktionalen Python-Programmierung (Codebeispiele)

Detaillierte Analyse der funktionalen Python-Programmierung (Codebeispiele)

不言
不言Original
2018-09-18 15:27:111663Durchsuche

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.

1. Funktionen höherer Ordnung

1. Variablen zeigen auf Funktionen

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.

2. Der Funktionsname ist auch eine Variable

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.

3. Funktion als formaler Parameter

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

2. Integrierte Funktionen der funktionalen Programmierung

1. map(func,seq)

  • 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]]

2. Reduce(func,list)

  • 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 funcVorgang 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

Sie können eine Kastanie zum Spielen finden

3. filter()

  • 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, funcwenden Sie die übergebene Funktion filter() entsprechend auf jedes Element an und geben Sie dann The zurück Der Wert funcoderTrue 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

  • Zum Beispiel: Löschen Sie in einer Liste gerade Zahlen und behalten Sie ungerade Zahlen bei.
>>> 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn