Python-Tricks (eBook)

Praktische Tipps für Fortgeschrittene

(Autor)

eBook Download: EPUB
2018 | 1. Auflage
210 Seiten
dpunkt (Verlag)
978-3-96088-600-6 (ISBN)

Lese- und Medienproben

Python-Tricks -  Dan Bader
Systemvoraussetzungen
29,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Dieses Buch soll aus dir einen besseren Python-Programmierer machen. Um den größten Nutzen aus diesem Buch zu ziehen, solltest du bereits über Python-Kenntnisse verfügen, die du erweitern möchtest. Am besten ist es, wenn du schon eine Weile in Python programmierst und bereit bist, in die Tiefe zu gehen, deine Kenntnisse abzurunden und deinen Code pythonischer zu machen. Wenn du dich fragst, welche weniger bekannten Teile in Python du kennen solltest, gibt dir dieses Buch eine Roadmap an die Hand. Entdecke coole und gleichzeitig praktische Python-Tricks, mit denen du beim nächsten Code Review der Hit bist. Wenn du Erfahrung mit älteren Versionen von Python hast, wird dich das Buch mit modernen Mustern und Funktionen vertraut machen, die in Python 3 eingeführt wurden. Dieses Buch ist aber auch hervorragend für dich geeignet, wenn du schon Erfahrungen mit anderen Programmiersprachen hast und dich schnell in Python einarbeiten möchtest. Du wirst hier einen wahren Schatz an praktischen Tipps und Entwurfsmustern finden, die dir helfen, ein erfolgreicher Python-Programmierer zu werden.

Dan Bader ist Softwareentwickler und Berater, der Python-Entwicklern hilft, ihre Programmierkenntnisse auf die nächste Stufe zu heben. Seine Artikel, Videos und Schulungen erreichen mehr als eine halbe Million Entwickler pro Jahr. Er hat mehr als 15 Jahre Erfahrung im Bereich Softwaredesign sowie -entwicklung und verfügt über einen Bachelor- und einen Master-Abschluss in Informatik. 

Dan Bader ist Softwareentwickler und Berater, der Python-Entwicklern hilft, ihre Programmierkenntnisse auf die nächste Stufe zu heben. Seine Artikel, Videos und Schulungen erreichen mehr als eine halbe Million Entwickler pro Jahr. Er hat mehr als 15 Jahre Erfahrung im Bereich Softwaredesign sowie -entwicklung und verfügt über einen Bachelor- und einen Master-Abschluss in Informatik. 

3Effektive Funktionen


3.1Pythons Funktionen sind erstklassig


Bei Python-Funktionen handelt es sich um Objekte erster Klasse. Du kannst sie Variablen zuweisen, in Datenstrukturen speichern, als Argumente an andere Funktionen übergeben und sogar als Werte von anderen Funktionen zurückgeben lassen. Ein intuitives Verständnis dieser Möglichkeiten macht es viel einfacher, sich mit anspruchsvolleren Python-Elementen wie Lambda-Funktionen und Dekoratoren vertraut zu machen. Es bringt dich auch auf den Weg zur Anwendung funktionaler Programmiertechniken.

Auf den folgenden Seiten stelle ich eine Reihe von Beispielen vor, mit deren Hilfe du ein solches intuitives Verständnis entwickeln kannst. Da die einzelnen Beispiele aufeinander aufbauen, solltest du sie in der angegebenen Reihenfolge lesen. Probiere sie auch in einer Session mit dem Python-Interpreter aus, während du den Erklärungen folgst. Es kann dich ein bisschen Zeit kosten, die hier vorgestellten Prinzipien zu verinnerlichen. Mache dir deswegen aber keine Sorgen, denn das ist völlig normal. Mir ist es genauso gegangen. Manchmal hatte ich das Gefühl, als käme ich nicht weiter, und dann machte es plötzlich klick, und alles ergab Sinn.

In diesem Abschnitt verwende ich zur Veranschaulichung die Funktion yell. Es handelt sich um eine einfache Beispielfunktion mit einer leicht wiedererkennbaren Ausgabe:

def yell(text):

return text.upper() + '!'

>>> yell('hello')

'HELLO!'

Funktionen sind Objekte

Alle Daten in einem Python-Programm werden durch Objekte oder Beziehungen zwischen Objekten dargestellt.1 Strings, Listen, Module und Funktionen sind Objekte. In Python sind auch Funktionen nichts Besonderes, sondern einfach Objekte. Da die Funktion yell in Python ein Objekt ist, kannst du sie wie jedes andere Objekt einer Variablen zuweisen:

>>> bark = yell

In dieser Zeile wird die Funktion nicht aufgerufen. Stattdessen wird hier der neue Name bark erstellt, der auf das Funktionsobjekt zeigt, auf das yell verweist. So kannst du dasselbe zugrunde liegende Funktionsobjekt jetzt auch dadurch ausführen, dass du bark aufrufst:

>>> bark('woof')

'WOOF!'

Funktionsobjekte und ihre Namen sind zwei verschiedene Dinge. Wenn du etwa den ursprünglichen Namen der Funktion löschst (yell), zeigt der alternative Name (bark) nach wie vor auf die zugrunde liegende Funktion, sodass du diese dadurch nach wie vor aufrufen kannst:

>>> del yell

>>> yell('hello?')

NameError: "name 'yell' is not defined"

>>> bark('hey')

'HEY!'

Wenn eine Funktion erstellt wird, verknüpft Python sie zu Debuggingzwecken mit einer ID in Stringform. Diese interne ID kannst du mit dem Attribut __name__ abrufen:2

>>> bark.__name__

'yell'

Der interne Funktionsname in __name__ ist zwar nach wie vor yell. Das hat aber keine Bedeutung dafür, wie du im Code auf das Funktionsobjekt zugreifst. Diese ID ist lediglich eine Hilfe für das Debugging. Eine Variable, die auf eine Funktion zeigt, und die Funktion selbst sind zwei völlig verschiedene Dinge.

Funktionen in Datenstrukturen speichern

Da Funktionen Objekte erster Klasse sind, lassen sie sich wie alle anderen Objekte in Datenstrukturen speichern. So kannst du sie unter anderem einer Liste hinzufügen:

>>> funcs = [bark, str.lower, str.capitalize]

>>> funcs

[<function yell at 0x10ff96510>,

<method 'lower' of 'str' objects>,

<method 'capitalize' of 'str' objects>]

Auch der Zugriff auf die Funktionsobjekte in der Liste erfolgt wie bei jeder anderen Art von Objekt:

>>> for f in funcs:

... print(f, f('hey there'))

<function yell at 0x10ff96510> 'HEY THERE!'

<method 'lower' of 'str' objects> 'hey there'

<method 'capitalize' of 'str' objects> 'Hey there'

Es ist sogar möglich, ein Funktionsobjekt in einer Liste aufzurufen, ohne es erst einer Variablen zuzuweisen. Du kannst es nachschlagen und dann im selben Ausdruck unmittelbar das körperlose Funktionsobjekt aufrufen:

>>> funcs[0]('heyho')

'HEYHO!'

Funktionen an andere Funktionen übergeben

Da Funktionen Objekte sind, kannst du sie auch als Argumente an andere Funktionen übergeben. Die folgende Funktion namens greet formatiert einen Begrüßungsstring mithilfe des Funktionsobjekts, das ihr übergeben wurde, und gibt ihn dann aus:

def greet(func):

greeting = func('Hi, I am a Python program')

print(greeting)

Die resultierende Begrüßung kannst du dadurch gestalten, dass du unterschiedliche Funktionen übergibst. Das folgende Beispiel zeigt, was geschieht, wenn du dazu die Funktion bark nimmst:

>>> greet(bark)

'HI, I AM A PYTHON PROGRAM!'

Natürlich kannst du auch eine neue Funktion definieren, um eine andere Art von Begrüßung zu generieren. Wenn du nicht willst, dass deine Python-Programme wie Optimus Prime klingen, kann die im Folgenden gezeigte Funktion whisper für deine Zwecke besser geeignet sein:

def whisper(text):

return text.lower() + '...'

>>> greet(whisper)

'hi, i am a python program...'

Funktionsobjekte als Argumente an andere Funktionen übergeben zu können, bietet viele Möglichkeiten. Du kannst damit Verhalten in einem Programm kapseln und austauschen. In diesem Beispiel kannst du die Ausgabe der Funktion greet dadurch verändern, dass du unterschiedliche Begrüßungsverhalten übergibst, während die Funktion selbst unverändert bleibt.

Funktionen, die andere Funktionen als Argumente entgegennehmen, werden auch als Funktionen höherer Ordnung bezeichnet. Für die funktionale Programmierung sind sie unentbehrlich. Das klassische Beispiel für eine Funktion höherer Ordnung ist die integrierte Python-Funktion map. Sie nimmt ein Funktionsobjekt und ein iterierbares Objekt entgegen und ruft dann die Funktion für jedes Element in dem iterierbaren Objekt auf, wobei sie jeweils die Ergebnisse zurückgibt. Das folgende Beispiel zeigt, wie du mehrere Begrüßungen auf einmal ausgibst, indem du die Funktion bark an map übergibst:

>>> list(map(bark, ['hello', 'hey', 'hi']))

['HELLO!',...

Erscheint lt. Verlag 23.8.2018
Übersetzer Volkmar Gronau
Verlagsort Heidelberg
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Schlagworte Best Practices • Phytonista • Programmierung • Python • Softwareentwicklung
ISBN-10 3-96088-600-4 / 3960886004
ISBN-13 978-3-96088-600-6 / 9783960886006
Haben Sie eine Frage zum Produkt?
EPUBEPUB (Wasserzeichen)
Größe: 436 KB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das Handbuch für Webentwickler

von Philip Ackermann

eBook Download (2023)
Rheinwerk Computing (Verlag)
37,43
Das umfassende Handbuch

von Johannes Ernesti; Peter Kaiser

eBook Download (2023)
Rheinwerk Computing (Verlag)
33,68