Heim Backend-Entwicklung Python-Tutorial Einführungs-Tutorial zur funktionalen Python-Programmierung

Einführungs-Tutorial zur funktionalen Python-Programmierung

Feb 04, 2017 pm 04:42 PM

Einführung

Funktional Das Konzept der Programmierung (funktionale Programmierung) stammt ursprünglich von LISP, das 1958 von John McCarthy gegründet wurde und als erster das Konzept der automatischen Garbage Collection vorschlug. Dieses Konzept wird mittlerweile auch von vielen Sprachen wie Python/Java/Ruby verwendet . Heute hat LISP viele Dialekte hervorgebracht. Im Vergleich zur objektorientierten Programmierung ist Unveränderlichkeit einer der Vorteile der funktionalen Programmierung Daten (Daten sind unveränderlich) bedeuten, dass sie nicht auf externen Daten basieren und den Wert externer Daten nicht ändern. Diese Idee kann Fehler in unserem Code erheblich reduzieren, und die funktionale Programmierung unterstützt uns auch bei der Verwendung von Funktionen wie Variablen. Als objektorientierte Sprache bietet Python auch Unterstützung für funktionale Programmierung, obwohl es nicht so rein ist und keine Schwanzrekursionsoptimierung unterstützt.

Verwendung von Lambda

Lambda ist eine anonyme Funktion, die nicht nur die Menge unseres Codes reduzieren, sondern auch die Codelogik besser beschreiben kann wie jetzt Wir haben eine Funktion wie die folgende.

1

2

3

4

5

6

>>> def f(x):

...    return x + x

#

调用这个函数

>>> f(2)

4

Nach dem Login kopieren

Wenn wir diese Funktion mit Lamda umschreiben, reicht nur eine Codezeile.

1

2

3

4

5

6

7

8

9

10

11

#

lambda后面的x表示lambda函数要接收的参数,x + x表示lambda函数所要返回的值

>>> f = lambda x: x + x

#

可以看到f现在也是一个函数对象

>>> f

<function __main__.<lambda>>

#

调用lambda函数

>>> f(2)

4

Nach dem Login kopieren

Nutzung der Karte

Karte(Funktion, iterierbar) empfängt zwei Parameter. Der erste Parameter stellt den Empfang einer Funktion dar, und der zweite Parameter stellt den Empfang eines Objekts vom Typ Iteralbe dar, beispielsweise einer Liste.

Das Prinzip der Kartenfunktion ist: 1. Nehmen Sie jedes Mal einen Parameter aus iterable heraus, 2. Übergeben Sie diesen Parameter an unsere Funktion, 3. Fügen Sie dann den von der Funktion zurückgegebenen Wert zu einer Liste hinzu (diese Aussage ist nicht korrekt, nur um es allen verständlich zu machen, werde ich sie erklären später) . Nachdem alle iterierbaren Objekte durchlaufen wurden, gibt Map die Liste an unseren Aufrufer zurück. Lassen Sie uns anhand von Beispielen lernen, wie man Map direkt verwendet.

Beispiel1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#

还是用我们上面那个lambda的例子

>>> function = lambda x: x + x

#

定义一个iterable对象list(列表)

>>> iterable = [1, 2, 3, 4, 5, 6, 7, 8, 9]

#

函数fucntion每次从iterable中取出一个参数x,然后function返回x + x的值,

#

并将返回值加入一个新建的list,等将iterable遍历完,map就将这个新建的list返回。

>>> v = map(function, iterable)

#

注意上面的说法并不准确,只是为了帮助大家理解,其实map返回的是一个map对象,并不是list

>>> v

<map at 0x7fcb56231588>

#

但是我们可以调用内建的list函数将map转换成一个list来得到我们想要的结果

>>> list(v)

[2, 4, 6, 8, 10, 12, 14, 16, 18]

Nach dem Login kopieren

Beispiel2

Für den zweiten Parameter von Map können wir auch eine Reihe von Funktionslisten übergeben, was bedeutet, dass die Liste mehrere Funktionen enthält .

1

2

3

4

5

>>> multiply = lambda x: x * x

>>> add = lambda x: x + x

>>> funcs = [multiply, add]

>>> list(map(lambda f: f(1), funcs))

[1, 2]

Nach dem Login kopieren

Verwendung von Reduce

Dasselbe wie bei Karte, Reduce(Funktion, iterierbar) empfängt außerdem zwei Parameter. Der erste Parameter stellt den Empfang einer Funktion dar, und der zweite Parameter stellt den Empfang eines Objekts vom Typ iteralbe dar, beispielsweise einer Liste. Der Unterschied besteht jedoch darin, dass die Funktion in Reduce zwei Parameter erhalten muss. Lassen Sie uns anhand des Beispiels der Ermittlung der kumulativen Summe einer Liste lernen, wie man Reduce verwendet.

1

2

3

4

5

6

7

8

9

10

11

from functools import reduce

#

使用lambda定义一个函数,函数的作用是接收两个参数,然后返回两个参数之和

>>> function = lambda x, y: x+y

>>> iterable = [1, 2, 3, 4, 5, 6, 7, 8, 9]

#

函数function每次接收两个参数,除第一次外每次从iterable中取一个元素作为一个参数

#

另外一个参数取自上一次function返回的值

>>> reduce(function,  iterable)

45

Nach dem Login kopieren

Die Verwendung des Filters

ähnelt Map/Reduce, Filter(function, iterierbar) empfängt auch zwei Parameter gleichzeitig, ein Parameter ist eine Funktion und der andere Parameter ist ein iterierbares Objekt. Wie aus dem Namen hervorgeht, wird Filter zum Filtern iterierbarer Objekte wie Listen (Listen) verwendet.

Das Prinzip besteht darin, ein Element aus dem iterierbaren Objekt herauszunehmen und es auf unsere Funktion anzuwenden. Wenn die Funktion „True“ zurückgibt, wird das Element beibehalten. Wenn die Funktion „False“ zurückgibt, wird das Element gelöscht. Schauen wir uns die Verwendung von Filtern anhand eines Beispiels an.

1

2

3

4

5

6

7

8

#

定义一个函数,如果接收的字符s为空,那么返回False,如果为非空,那么返回True

>>> function = lambda s : s and s.strip()

>>> iterable = [&#39;AJ&#39;, &#39; &#39;, &#39;Stussy&#39;, &#39;&#39;, &#39;CLOT&#39;, &#39;FCB&#39;, None]

>>> filter(function, iterable)

<filter at 0x7fcb562319b0>

>>> list(filter(function, iterable))

[&#39;AJ&#39;, &#39;Stussy&#39;, &#39;CLOT&#39;, &#39;FCB&#39;]

Nach dem Login kopieren

Decorator

Decorator ist eine erweiterte Python-Syntax. Dekorateure können eine Funktion, Methode oder Klasse verarbeiten. Der sinnvolle Einsatz von Dekoratoren kann die Menge unseres Codes reduzieren und die Lesbarkeit des Programms verbessern. In vielen Python-Frameworks wie Django können wir eine große Anzahl von Dekoratoren sehen.

1

2

3

4

5

6

>>> def add(x, y):

...     return x + y

...

>>> def multiply(x, y):

...     return x * y

...

Nach dem Login kopieren

Jetzt haben wir die beiden oben genannten Funktionen, die zur Berechnung der Addition bzw. Multiplikation verwendet werden, aber jetzt sind wir der Meinung, dass die Funktion nicht ausreicht, und möchten im Allgemeinen einige Ausgabeanweisungen hinzufügen, bevor wir das Ergebnis zurückgeben Wenn wir sprechen, müssen wir die beiden Funktionen A rekonstruieren, wie unten gezeigt.

1

2

3

4

5

6

7

8

>>> def add(x, y):

...     print("input:", x, y)

...     return x + y

...

>>> def multiply(x, y):

...     print("input:", x, y)

...     return x * y

...

Nach dem Login kopieren

Wenn wir einen Dekorator verwenden, können wir wie folgt vorgehen. Obwohl die Verwendung eines Dekorators in unserer aktuellen Situation keinen Vorteil zu haben scheint, wenn wir mehr als eine Druckfunktion hinzufügen möchten, und Zusätzlich zum Addieren/Multiplizieren haben wir auch Funktionen wie Minus/Dividieren. Dies spiegelt die Leistung des Dekorators wider. Dies verbessert nicht nur die Lesbarkeit des Programms, sondern spart auch Zeit Es war eine Menge Arbeit, den Code in Zukunft zu rekonstruieren.

1

2

3

4

5

6

7

8

9

10

11

def decorator(F):

    def new_function(x, y):

        print("input:", x, y)

        return F(x, y)

    return new_function

@decorator

def add(x, y):

    return x + y

@decorator

def multiply(x, y):

    return x * y

Nach dem Login kopieren

Das Obige ist der Inhalt des Einführungs-Tutorials in die funktionale Python-Programmierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Gibt es eine mobile App, die XML in PDF umwandeln kann? Gibt es eine mobile App, die XML in PDF umwandeln kann? Apr 02, 2025 pm 08:54 PM

Eine Anwendung, die XML direkt in PDF konvertiert, kann nicht gefunden werden, da es sich um zwei grundlegend unterschiedliche Formate handelt. XML wird zum Speichern von Daten verwendet, während PDF zur Anzeige von Dokumenten verwendet wird. Um die Transformation abzuschließen, können Sie Programmiersprachen und Bibliotheken wie Python und ReportLab verwenden, um XML -Daten zu analysieren und PDF -Dokumente zu generieren.

So öffnen Sie das XML -Format So öffnen Sie das XML -Format Apr 02, 2025 pm 09:00 PM

Verwenden Sie die meisten Texteditoren, um XML -Dateien zu öffnen. Wenn Sie eine intuitivere Baumanzeige benötigen, können Sie einen XML -Editor verwenden, z. B. Sauerstoff XML -Editor oder XMLSPY. Wenn Sie XML -Daten in einem Programm verarbeiten, müssen Sie eine Programmiersprache (wie Python) und XML -Bibliotheken (z. B. XML.etree.elementtree) verwenden, um zu analysieren.

Empfohlenes XML -Formatierungswerkzeug Empfohlenes XML -Formatierungswerkzeug Apr 02, 2025 pm 09:03 PM

XML -Formatierungs -Tools können Code nach Regeln eingeben, um die Lesbarkeit und das Verständnis zu verbessern. Achten Sie bei der Auswahl eines Tools auf die Anpassungsfunktionen, den Umgang mit besonderen Umständen, die Leistung und die Benutzerfreundlichkeit. Zu den häufig verwendeten Werkzeugtypen gehören Online-Tools, IDE-Plug-Ins und Befehlszeilen-Tools.

Gibt es ein kostenloses XML -zu -PDF -Tool für Mobiltelefone? Gibt es ein kostenloses XML -zu -PDF -Tool für Mobiltelefone? Apr 02, 2025 pm 09:12 PM

Es gibt kein einfaches und direktes kostenloses XML -zu -PDF -Tool auf Mobilgeräten. Der erforderliche Datenvisualisierungsprozess beinhaltet komplexes Datenverständnis und Rendering, und die meisten sogenannten "freien" Tools auf dem Markt haben schlechte Erfahrung. Es wird empfohlen, Computer-Seiten-Tools zu verwenden oder Cloud-Dienste zu verwenden oder Apps selbst zu entwickeln, um zuverlässigere Conversion-Effekte zu erhalten.

So ändern Sie den Kommentarinhalt in XML So ändern Sie den Kommentarinhalt in XML Apr 02, 2025 pm 06:15 PM

Für kleine XML -Dateien können Sie den Annotationsinhalt direkt durch einen Texteditor ersetzen. Für große Dateien wird empfohlen, den XML -Parser zu verwenden, um ihn zu ändern, um Effizienz und Genauigkeit zu gewährleisten. Seien Sie vorsichtig, wenn Sie XML -Kommentare löschen. Beibehalten von Kommentaren hilft das Verständnis und die Wartung von Code normalerweise. Erweiterte Tipps bieten Python -Beispielcode, um Kommentare mit XML -Parser zu ändern. Die spezifische Implementierung muss jedoch gemäß der verwendeten XML -Bibliothek angepasst werden. Achten Sie bei der Änderung von XML -Dateien auf Codierungsprobleme. Es wird empfohlen, die UTF-8-Codierung zu verwenden und das Codierungsformat anzugeben.

Benötigt die XML -Änderung eine Programmierung? Benötigt die XML -Änderung eine Programmierung? Apr 02, 2025 pm 06:51 PM

Das Ändern des XML -Inhalts erfordert die Programmierung, da die Zielknoten genau aufgefasst werden müssen, um hinzuzufügen, zu löschen, zu ändern und zu überprüfen. Die Programmiersprache verfügt über entsprechende Bibliotheken, um XML zu verarbeiten, und bietet APIs zur Durchführung sicherer, effizienter und steuerbarer Vorgänge wie Betriebsdatenbanken.

Ist die Konversionsgeschwindigkeit beim Umwandeln von XML in PDF auf Mobiltelefon schnell? Ist die Konversionsgeschwindigkeit beim Umwandeln von XML in PDF auf Mobiltelefon schnell? Apr 02, 2025 pm 10:09 PM

Die Geschwindigkeit der mobilen XML zu PDF hängt von den folgenden Faktoren ab: der Komplexität der XML -Struktur. Konvertierungsmethode für mobile Hardware-Konfiguration (Bibliothek, Algorithmus) -Codierungsoptimierungsmethoden (effiziente Bibliotheken, Optimierung von Algorithmen, Cache-Daten und Nutzung von Multi-Threading). Insgesamt gibt es keine absolute Antwort und es muss gemäß der spezifischen Situation optimiert werden.

Wie steuert ich die Größe von XML, die in Bilder konvertiert sind? Wie steuert ich die Größe von XML, die in Bilder konvertiert sind? Apr 02, 2025 pm 07:24 PM

Um Bilder über XML zu generieren, müssen Sie Grafikbibliotheken (z. B. Kissen und Jfreechart) als Brücken verwenden, um Bilder basierend auf Metadaten (Größe, Farbe) in XML zu generieren. Der Schlüssel zur Steuerung der Bildgröße besteht darin, die Werte der & lt; width & gt; und & lt; Höhe & gt; Tags in XML. In praktischen Anwendungen haben jedoch die Komplexität der XML -Struktur, die Feinheit der Graphenzeichnung, die Geschwindigkeit der Bilderzeugung und des Speicherverbrauchs und die Auswahl der Bildformate einen Einfluss auf die generierte Bildgröße. Daher ist es notwendig, ein tiefes Verständnis der XML -Struktur zu haben, die in der Grafikbibliothek kompetent ist, und Faktoren wie Optimierungsalgorithmen und Bildformatauswahl zu berücksichtigen.

See all articles