Tutorial:Programmieren mit Python/Funktionen und Bibliotheken: Unterschied zwischen den Versionen

Aus KGS-Wiki
(Die Seite wurde neu angelegt: „==Funktionen aufrufen== Funktionen kennen wir aus der Mathematik als (vereinfacht gesagt) Rechenvorschriften, um ein oder mehrere Objekte in andere umzurechnen. Zum Beispiel erhält die Funktion <math>f(x) = x^2</math> einen Wert für den Parameter <math>x</math> und gibt dessen Quadrat als Ergebnis zurück. Nun können wir Funktionswerte wie <math>f(4)=16</math> berechnen. Dieses Konzept existiert auch…“)
 
K (→‎Bibliotheken: Fehlendes Wort)
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{../Navigation}}
==Funktionen aufrufen==
==Funktionen aufrufen==
[[Unterprogramm#Funktion|Funktionen]] kennen wir aus der Mathematik als (vereinfacht gesagt) Rechenvorschriften, um ein oder mehrere [[Objekt (Informatik)|Objekte]] in andere umzurechnen. Zum Beispiel erhält die Funktion <math>f(x) = x^2</math> einen Wert für den Parameter <math>x</math> und gibt dessen Quadrat als Ergebnis zurück. Nun können wir Funktionswerte wie <math>f(4)=16</math> berechnen.
[[Unterprogramm#Funktion|Funktionen]] kennen wir aus der Mathematik als (vereinfacht gesagt) Rechenvorschriften, um ein oder mehrere [[Objekt (Informatik)|Objekte]] in andere umzurechnen. Zum Beispiel erhält die Funktion <math>f(x) = x^2</math> einen Wert für den Parameter <math>x</math> und gibt dessen Quadrat als Ergebnis zurück. Nun können wir Funktionswerte wie <math>f(4)=4^2=16</math> berechnen.


Dieses Konzept existiert auch in Python. Zum Beispiel existiert die Funktion <code>round(x)</code>, die eine als Parameter übergebene Zahl <code>x</code> kaufmännisch rundet.<pre>
Dieses Konzept existiert auch in Python. Zum Beispiel existiert die Funktion {{Python|round(x)}}, die eine als Parameter übergebene Zahl {{Python|x}} kaufmännisch rundet.
<syntaxhighlight lang="pycon">
>>> round(4.2)
>>> round(4.2)
4
4
Zeile 9: Zeile 11:
>>> round(-5)
>>> round(-5)
-5
-5
</pre>Die Schreibweise <code>funktionsname(parameterwert)</code> orientiert sich an der mathematischen Notation.
</syntaxhighlight>
Die Schreibweise {{Python|funktionsname(parameterwert)}} orientiert sich an der mathematischen Notation.


==Funktionen definieren==
==Funktionen definieren==
In Python lassen sich auch eigene Funktionen definieren. Dieses Konzept kennen wir bereits aus der [[Visuelle Programmierung|visuellen Programmierung]]: In [[Scratch]] können wir "neue Blöcke" erstellen, hinter denen sich selbst definierte Unterprogramme verbergen.
In Python lassen sich auch eigene Funktionen definieren. Dieses Konzept kennen wir bereits aus der [[Visuelle Programmierung|visuellen Programmierung]]: In [[Scratch]] können wir <q>neue Blöcke</q> erstellen, hinter denen sich selbst definierte Unterprogramme verbergen.


In Python lassen sich mit dem Schlüsselwort <code>def</code> eigene Funktionen definieren. Die einfachste Form dafür lautet <code>def</code> ''Funktionsname'' <code>():</code>
In Python lassen sich mit dem Schlüsselwort {{Python|def}} eigene Funktionen definieren. Die einfachste Form dafür lautet {{Python|def}}&nbsp;''Funktionsname''{{Python|():}}


Das folgende Beispiel definiert eine Funktion bzw. Unterprogramm mit dem Funktionsnamen <code>waagerechte_linie</code>, das beim Aufruf eine Zeile mit 40 Strichzeichen in die Konsole schreibt:<syntaxhighlight lang="python" line="1">
Das folgende Beispiel definiert eine Funktion bzw. Unterprogramm mit dem Funktionsnamen {{Python|waagerechte_linie}}, das beim Aufruf eine Zeile mit 40 Strichzeichen in die Konsole schreibt:<syntaxhighlight lang="python" line="1">
def waagerechte_linie():
def waagerechte_linie():
     print('----------------------------------------')
     print('----------------------------------------')
</syntaxhighlight>Die erste Zeile, die mit <code>def</code> eingeleitet wird, nennen wir den ''Funktionskopf'', den Rest den ''Funktionsrumpf''. Der Funktionsrumpf enthält das eigentliche Unterprogramm, also die Anweisungen, die beim Aufruf der Funktion ausgeführt werden sollen.
</syntaxhighlight>Die erste Zeile, die mit {{Python|def}} eingeleitet wird, nennen wir den ''Funktionskopf'', den Rest den ''Funktionsrumpf''. Der Funktionsrumpf enthält das eigentliche Unterprogramm, also die Anweisungen, die beim Aufruf der Funktion ausgeführt werden sollen.


Im Funktionskopf können wir zusätzlich Parameter festlegen, über die der Funktion beim Aufruf Werte übergeben werden können, die in der Funktionsausführung eine Rolle spielen. Dazu schreiben wir in die Klammern die Namen der Parameter. Bei der Abarbeitung dieser Funktion werden die Parameter dann wie lokale Variablen verwendet, die nur innerhalb der Funktion sichtbar sind. Mehrere Parameter werden mit Komma getrennt angegeben:<syntaxhighlight lang="python" line="1">
Im Funktionskopf können wir zusätzlich Parameter festlegen, über die der Funktion beim Aufruf Werte übergeben werden können, die in der Funktionsausführung eine Rolle spielen. Dazu schreiben wir in die Klammern die Namen der Parameter. Bei der Abarbeitung dieser Funktion werden die Parameter dann wie lokale Variablen verwendet, die nur innerhalb der Funktion sichtbar sind. Mehrere Parameter werden mit Komma getrennt angegeben:<syntaxhighlight lang="python" line="1">
Zeile 29: Zeile 32:
</syntaxhighlight>Beim Funktionsaufruf muss darauf geachtet werden, dass für alle Parameter geeignete Werte angegeben werden.
</syntaxhighlight>Beim Funktionsaufruf muss darauf geachtet werden, dass für alle Parameter geeignete Werte angegeben werden.


Die Aufrufe der drei oben definierten Funktionen könnten dann beispielsweise folgendermaßen aussehen:<pre>
Die Aufrufe der drei oben definierten Funktionen könnten dann beispielsweise folgendermaßen aussehen:
<syntaxhighlight lang="pycon">
>>> waagerechte_linie()
>>> waagerechte_linie()
-------------------------------------------
-------------------------------------------
Zeile 38: Zeile 42:
>>> sehr_flexible_linie(5, '.')
>>> sehr_flexible_linie(5, '.')
.....
.....
</pre>{{Achtung|Die Definition einer Funktion ist für sich genommen wertlos, solange die Funktion nirgendwo im Programm aufgerufen wird. Erst beim Aufruf einer Funktion wird der Programmteil, der durch die Funktion definiert wird, ausgeführt.}}
</syntaxhighlight>
{{Achtung|Die Definition einer Funktion ist für sich genommen wertlos, solange die Funktion nirgendwo im Programm aufgerufen wird. Erst beim Aufruf einer Funktion wird der Programmteil, der durch die Funktion definiert wird, ausgeführt.}}


===Rückgabewerte===
===Rückgabewerte===
Mit dem Schlüsselwort <code>return</code> kann das Ergebnis einer Funktion an die Aufrufstelle zurückgegeben werden. Die Funktionsausführung endet an dieser Stelle.<syntaxhighlight lang="python" line="1">
Mit dem Schlüsselwort {{Python|return}} kann das Ergebnis einer Funktion an die Aufrufstelle zurückgegeben werden. Die Funktionsausführung endet an dieser Stelle.<syntaxhighlight lang="python" line="1">
def quadrat(x):
def quadrat(x):
     return x * x
     return x * x
</syntaxhighlight>Funktionen mit Rückgabewert können im Programm nicht nur als [[Anweisung|Anweisungen]], sondern als [[Ausdruck|Ausdrücke]] eingesetzt werden. Das bedeutet, dass sie z. B. in mathematischen Berechnungen oder Parametern von weiteren Funktionsaufrufen eingesetzt werden können.
</syntaxhighlight>Funktionen mit Rückgabewert können im Programm nicht nur als [[Anweisung|Anweisungen]], sondern als [[Ausdruck|Ausdrücke]] eingesetzt werden. Das bedeutet, dass sie z. B. in mathematischen Berechnungen oder Parametern von weiteren Funktionsaufrufen eingesetzt werden können.
>>> quadrat(5)
<syntaxhighlight lang="pycon">
25
>>> quadrat(5)
>>> quersumme(1234)
25
10
>>> quersumme(1234)
>>> quersumme(3190701205)
10
28
>>> quersumme(3190701205)
>>> quersumme(quersumme(3190701205))
28
10
>>> quersumme(quersumme(3190701205))
>>> quadrat(11) + quersumme(11)
10
123
>>> quadrat(11) + quersumme(11)
123
</syntaxhighlight>
Funktionen können natürlich sehr viel umfangreicher sein, als nur einfache mathematische Ausdrücke auszuwerten und als Ergebnis zurückzugeben. Prinzipiell können die Unterprogramme, die in den Funktionsrümpfen stehen, beliebig komplex sein – also Anweisungssequenzen, Kontrollstrukturen, Ein- und Ausgaben sowie weitere Funktionsaufrufe enthalten.<syntaxhighlight lang="python" line="1">
Funktionen können natürlich sehr viel umfangreicher sein, als nur einfache mathematische Ausdrücke auszuwerten und als Ergebnis zurückzugeben. Prinzipiell können die Unterprogramme, die in den Funktionsrümpfen stehen, beliebig komplex sein – also Anweisungssequenzen, Kontrollstrukturen, Ein- und Ausgaben sowie weitere Funktionsaufrufe enthalten.<syntaxhighlight lang="python" line="1">
def quersumme(zahl):
def quersumme(zahl):
Zeile 65: Zeile 72:


==Bibliotheken==
==Bibliotheken==
Wie viele andere [[Programmiersprache|Programmiersprachen]] verfügt Python nur über sehr wenige eingebaute Funktionen, z. B. <code>len()</code>, <code>int()</code> oder <code>range()</code>. Diese Funktionen stellen die wichtigsten Funktionalitäten zum Programmieren und die wichtigsten [[Datentyp|Datentypen]] zur Verfügung. Alles, was man darüber hinaus benötigen könnte, wird von so genannten ''[[Programmbibliothek|Bibliotheken]]'' zur Verfügung gestellt, wobei jede Bibliothek eine klar definierte Funktionalität erfüllt.
Wie viele andere [[Programmiersprache|Programmiersprachen]] verfügt Python nur über sehr wenige eingebaute Funktionen, z. B. {{Python|len()}}, {{Python|int()}} oder {{Python|range()}}. Diese Funktionen stellen die wichtigsten Funktionalitäten zum Programmieren und die wichtigsten [[Datentyp|Datentypen]] zur Verfügung. Alles, was man darüber hinaus benötigen könnte, wird von so genannten ''[[Programmbibliothek|Bibliotheken]]'' zur Verfügung gestellt, wobei jede Bibliothek eine klar definierte Funktionalität erfüllt.


In Python sind einige Bibliotheken standardmäßig vorinstalliert und können mit <code>import</code> genutzt werden. Dazu gehören u. a.:
In Python sind einige Bibliotheken standardmäßig vorinstalliert und können mit {{Python|import}} genutzt werden. Dazu gehören u. a.:
{| class="wikitable"
{| class="wikitable"
!Name
!Name
!Zweck
!Zweck
|-
|-
|<code>math</code>
|{{Python|math}}
|Mathematische Funktionen wie Wurzeln, Sinus/Kosinus, Logarithmen usw.
|Mathematische Funktionen wie Wurzeln, Sinus/Kosinus, Logarithmen usw.
|-
|-
|<code>os</code>
|{{Python|os}}
|Zugriff auf das Betriebssystem
|Zugriff auf das Betriebssystem
|-
|-
|<code>sys</code>
|{{Python|sys}}
|Zugriff auf Attribute und Funktionen des Python-Interpreters
|Zugriff auf Attribute und Funktionen des Python-Interpreters
|-
|-
|<code>random</code>
|{{Python|random}}
|Generieren von Zufallszahlen
|Generieren von Zufallszahlen
|-
|-
|<code>tkinter</code>
|{{Python|tkinter}}
|Programmieren von grafischen Benutzeroberflächen
|Programmieren von grafischen Benutzeroberflächen
|-
|-
|<code>turtle</code>
|{{Python|turtle}}
|Zeichnen von Turtle-Grafiken
|Zeichnen von Turtle-Grafiken
|-
|-
|<code>datetime</code>
|{{Python|datetime}}
|Operationen mit Datum und Zeit
|Operationen mit Datum und Zeit
|-
|-
|<code>shutil</code>
|{{Python|shutil}}
|Komplexere Operationen auf Dateien
|Komplexere Operationen auf Dateien
|}
|}
Zeile 101: Zeile 108:
!Zweck
!Zweck
|-
|-
|<code>bottle</code>
|{{Python|bottle}}
|Ein einfacher [[Webserver]]
|Ein einfacher [[Webserver]]
|-
|-
|<code>cryptography</code>
|{{Python|cryptography}}
|Eine Bibliothek mit [[Kryptographie|kryptografische]]
|Eine Bibliothek mit [[Kryptographie|kryptografischen Funktionen]]
|}
|}


Zeile 111: Zeile 118:


===Bibliotheken einbinden und nutzen===
===Bibliotheken einbinden und nutzen===
Zum Einbinden einer Bibliothek in ein Python-Programm wird das Schlüsselwort <code>import</code> verwendet. Entweder bindet man die ganze Bibliothek mit <code>import math</code> ein oder pickt sich einzelne Funktionen heraus, etwa die Funktion <code>sqrt</code> zum Berechnen der Quadratwurzel. In diesem Fall schreibt man <code>from math import sqrt</code>. Mit <code>from math import *</code> können alle Funktionen und Konstanten aus der <code>math</code>-Bibliothek importiert werden.
Zum Einbinden einer Bibliothek in ein Python-Programm wird das Schlüsselwort {{Python|import}} verwendet. Entweder bindet man die ganze Bibliothek mit {{Python|import math}} ein oder pickt sich einzelne Funktionen heraus, etwa die Funktion {{Python|sqrt}} zum Berechnen der Quadratwurzel. In diesem Fall schreibt man {{Python|from math import sqrt}}. Mit {{Python|from math import *}} können alle Funktionen und Konstanten aus der {{Python|math}}-Bibliothek importiert werden.


Im ersten Fall muss man dann, um auf die Konstanten und Funktionen der Bibliothek zugreifen zu können, den Namen der Bibliothek (mit Punkt getrennt) vor die Aufrufe setzen: Für 4​ schreibt man dann <code>math.sqrt(4)</code>. Im zweiten Fall (<code>from math import sqrt</code> oder <code>from math import *</code>) schreibt man einfach <code>sqrt(4)</code>, um die Funktion aufzurufen.
Im ersten Fall muss man dann, um auf die Konstanten und Funktionen der Bibliothek zugreifen zu können, den Namen der Bibliothek (mit Punkt getrennt) vor die Aufrufe setzen: Für 4​ schreibt man dann {{Python|math.sqrt(4)}}. Im zweiten Fall ({{Python|from math import sqrt}} oder {{Python|from math import *}}) schreibt man einfach {{Python|sqrt(4)}}, um die Funktion aufzurufen.
{| class="wikitable"
{| class="wikitable"
!
!
Zeile 121: Zeile 128:
|-
|-
|Einbinden
|Einbinden
|<code>import math</code>
|{{Python|import math}}
|<code>from math import sqrt</code>
|{{Python|from math import sqrt}}
|<code>from math import *</code>
|{{Python|from math import *}}
|-
|-
|<math>\sqrt(4)</math>​
|<math>\sqrt{4}</math>​
|<code>math.sqrt(4)</code> <code>2</code>
|{{Python|math.sqrt(4)}} {{Python|2}}
|<code>sqrt(4)</code> <code>2</code>
|{{Python|sqrt(4)}} {{Python|2}}
|<code>sqrt(4)</code> <code>2</code>
|{{Python|sqrt(4)}} {{Python|2}}
|-
|-
|<math>\pi</math>
|<math>\pi</math>
|<code>math.pi</code><code>3.141592653589793</code>
|{{Python|math.pi}}{{Python|3.141592653589793}}
|<code>pi</code> → Fehler, weil nur <code>sqrt</code> importiert wurde!
|{{Python|pi}} → Fehler, weil nur {{Python|sqrt}} importiert wurde!
|<code>pi</code> <code>3.141592653589793</code>
|{{Python|pi}} {{Python|3.141592653589793}}
|-
|-
|Vorteile
|Vorteile
Zeile 141: Zeile 148:
|-
|-
|Nachteile
|Nachteile
|Größerer Schreibaufwand und unintuitive Notationen wie <code>datetime.datetime</code>
|Größerer Schreibaufwand und unintuitive Notationen wie {{Python|datetime.datetime}}
|Verwirrende Fehlermeldungen, wenn man nicht importierte Funktionen verwenden möchte
|Verwirrende Fehlermeldungen, wenn man nicht importierte Funktionen verwenden möchte
|Risiko von Namensverwirrungen, z. B. gibt es <code>ceil</code>-Funktionen in den Bibliotheken <code>math</code>, <code>numpy</code> und <code>torch</code>.
|Risiko von Namensverwirrungen, z. B. gibt es {{Python|ceil}}-Funktionen in den Bibliotheken {{Python|math}}, {{Python|numpy}} und {{Python|torch}}.
|}
|}


===Bibliotheken in Thonny installieren===
===Bibliotheken in Thonny installieren===
{{Lückenhaft|Die restlichen Bilder kommen noch
<gallery mode="slideshow">
}}
Datei:Thonny Package Overview.png|Thonny enthält eine Paket-Verwaltung für PyPI, die sich im Menü unter ''Extras → Verwalte Plug-Ins…'' aufrufen lässt.
Thonny enthält eine Paket-Verwaltung für ''PyPI'', die sich im Menü unter ''Extras'' ''Verwalte Plug-Ins…'' aufrufen lässt.
Datei:Thonny Paket Suche.png|Dieses Fenster gestattet es, im PyPI nach Paketen zu suchen...
[[Datei:Thonny Package Overview.png|ohne|gerahmt]]
Datei:Thonny Paket Details.png|... Details zu einzelnen Bibliotheken anzuzeigen...
Dieses Fenster gestattet es, im ''PyPI'' nach Paketen zu suchen:
Datei:Thonny Paket installiert.png|... und Pakete zu installieren oder deinstallieren.
 
</gallery>
Details zu einzelnen Bibliotheken anzuzeigen:
 
und Pakete zu installieren oder deinstallieren:


==Weblinks==
==Weblinks==


*[https://pypi.python.org Python Package Index {{Flagge|GB}}]
*[https://pypi.python.org Python Package Index {{Flagge|GB}}]

Aktuelle Version vom 9. Oktober 2024, 13:08 Uhr

Funktionen aufrufen

Funktionen kennen wir aus der Mathematik als (vereinfacht gesagt) Rechenvorschriften, um ein oder mehrere Objekte in andere umzurechnen. Zum Beispiel erhält die Funktion einen Wert für den Parameter und gibt dessen Quadrat als Ergebnis zurück. Nun können wir Funktionswerte wie berechnen.

Dieses Konzept existiert auch in Python. Zum Beispiel existiert die Funktion round(x), die eine als Parameter übergebene Zahl x kaufmännisch rundet.

>>> round(4.2)
4
>>> round(6.66)
7
>>> round(-5)
-5

Die Schreibweise funktionsname(parameterwert) orientiert sich an der mathematischen Notation.

Funktionen definieren

In Python lassen sich auch eigene Funktionen definieren. Dieses Konzept kennen wir bereits aus der visuellen Programmierung: In Scratch können wir neue Blöcke erstellen, hinter denen sich selbst definierte Unterprogramme verbergen.

In Python lassen sich mit dem Schlüsselwort def eigene Funktionen definieren. Die einfachste Form dafür lautet def Funktionsname():

Das folgende Beispiel definiert eine Funktion bzw. Unterprogramm mit dem Funktionsnamen waagerechte_linie, das beim Aufruf eine Zeile mit 40 Strichzeichen in die Konsole schreibt:

def waagerechte_linie():
    print('----------------------------------------')

Die erste Zeile, die mit def eingeleitet wird, nennen wir den Funktionskopf, den Rest den Funktionsrumpf. Der Funktionsrumpf enthält das eigentliche Unterprogramm, also die Anweisungen, die beim Aufruf der Funktion ausgeführt werden sollen. Im Funktionskopf können wir zusätzlich Parameter festlegen, über die der Funktion beim Aufruf Werte übergeben werden können, die in der Funktionsausführung eine Rolle spielen. Dazu schreiben wir in die Klammern die Namen der Parameter. Bei der Abarbeitung dieser Funktion werden die Parameter dann wie lokale Variablen verwendet, die nur innerhalb der Funktion sichtbar sind. Mehrere Parameter werden mit Komma getrennt angegeben:

def unterschiedlich_lange_linie(laenge):
    print('-' * laenge)

def sehr_flexible_linie(laenge, zeichen):
    print(zeichen * laenge)

Beim Funktionsaufruf muss darauf geachtet werden, dass für alle Parameter geeignete Werte angegeben werden.

Die Aufrufe der drei oben definierten Funktionen könnten dann beispielsweise folgendermaßen aussehen:

>>> waagerechte_linie()
-------------------------------------------
>>> unterschiedlich_lange_linie(10)
----------
>>> sehr_flexible_linie(15, '=')
===============
>>> sehr_flexible_linie(5, '.')
.....
⚠️
Achtung

Die Definition einer Funktion ist für sich genommen wertlos, solange die Funktion nirgendwo im Programm aufgerufen wird. Erst beim Aufruf einer Funktion wird der Programmteil, der durch die Funktion definiert wird, ausgeführt.

Rückgabewerte

Mit dem Schlüsselwort return kann das Ergebnis einer Funktion an die Aufrufstelle zurückgegeben werden. Die Funktionsausführung endet an dieser Stelle.

def quadrat(x):
    return x * x

Funktionen mit Rückgabewert können im Programm nicht nur als Anweisungen, sondern als Ausdrücke eingesetzt werden. Das bedeutet, dass sie z. B. in mathematischen Berechnungen oder Parametern von weiteren Funktionsaufrufen eingesetzt werden können.

>>> quadrat(5)
25
>>> quersumme(1234)
10
>>> quersumme(3190701205)
28
>>> quersumme(quersumme(3190701205))
10
>>> quadrat(11) + quersumme(11)
123

Funktionen können natürlich sehr viel umfangreicher sein, als nur einfache mathematische Ausdrücke auszuwerten und als Ergebnis zurückzugeben. Prinzipiell können die Unterprogramme, die in den Funktionsrümpfen stehen, beliebig komplex sein – also Anweisungssequenzen, Kontrollstrukturen, Ein- und Ausgaben sowie weitere Funktionsaufrufe enthalten.

def quersumme(zahl):
    zahl_als_string = str(zahl)
    summe = 0
    for ziffer in zahl_als_string:
        summe = summe + int(ziffer)
    return summe

Bibliotheken

Wie viele andere Programmiersprachen verfügt Python nur über sehr wenige eingebaute Funktionen, z. B. len(), int() oder range(). Diese Funktionen stellen die wichtigsten Funktionalitäten zum Programmieren und die wichtigsten Datentypen zur Verfügung. Alles, was man darüber hinaus benötigen könnte, wird von so genannten Bibliotheken zur Verfügung gestellt, wobei jede Bibliothek eine klar definierte Funktionalität erfüllt.

In Python sind einige Bibliotheken standardmäßig vorinstalliert und können mit import genutzt werden. Dazu gehören u. a.:

Name Zweck
math Mathematische Funktionen wie Wurzeln, Sinus/Kosinus, Logarithmen usw.
os Zugriff auf das Betriebssystem
sys Zugriff auf Attribute und Funktionen des Python-Interpreters
random Generieren von Zufallszahlen
tkinter Programmieren von grafischen Benutzeroberflächen
turtle Zeichnen von Turtle-Grafiken
datetime Operationen mit Datum und Zeit
shutil Komplexere Operationen auf Dateien

Daneben lassen sich auch weitere Bibliotheken von Drittanbietern nachinstallieren. Die offizielle Sammlung von Python-Bibliotheken ist der Python Package Index (PyPI). Python-Programmierys können eigene Bibliotheken erstellen und über den PyPI veröffentlichen. Dort findet man unter anderem nützliche Bibliotheken wie:

Name Zweck
bottle Ein einfacher Webserver
cryptography Eine Bibliothek mit kryptografischen Funktionen
⚠️
Achtung

Im PyPI sind beliebte und vielgenutzte Pakete wie die Webserver Django, Bottle und Flask zu finden, aber auch Nonsens-Pakete wie shittypackage und teilweise sogar bösartige Pakete. Darum sollte man beim Benutzen von PyPI-Paketen eine gewisse Vorsicht walten lassen und sich vorher über diese Pakete informieren.

Bibliotheken einbinden und nutzen

Zum Einbinden einer Bibliothek in ein Python-Programm wird das Schlüsselwort import verwendet. Entweder bindet man die ganze Bibliothek mit import math ein oder pickt sich einzelne Funktionen heraus, etwa die Funktion sqrt zum Berechnen der Quadratwurzel. In diesem Fall schreibt man from math import sqrt. Mit from math import * können alle Funktionen und Konstanten aus der math-Bibliothek importiert werden.

Im ersten Fall muss man dann, um auf die Konstanten und Funktionen der Bibliothek zugreifen zu können, den Namen der Bibliothek (mit Punkt getrennt) vor die Aufrufe setzen: Für 4​ schreibt man dann math.sqrt(4). Im zweiten Fall (from math import sqrt oder from math import *) schreibt man einfach sqrt(4), um die Funktion aufzurufen.

Ganze Bibliothek importieren Einzelne Funktionen aus einer Bibliothek importieren Alle Funktionen aus einer Bibliothek importieren
Einbinden import math from math import sqrt from math import *
math.sqrt(4)2 sqrt(4)2 sqrt(4)2
math.pi3.141592653589793 pi → Fehler, weil nur sqrt importiert wurde! pi3.141592653589793
Vorteile Keine Namensverwirrung, weil beim Funktionsaufruf der Bibliotheksname mit angegeben werden muss Entlastet den Arbeitsspeicher, weil nur wirklich benötigte Funktionen geladen werden Importiert eine ganze Bibliothek, ermöglicht aber kompakte Notation.
Nachteile Größerer Schreibaufwand und unintuitive Notationen wie datetime.datetime Verwirrende Fehlermeldungen, wenn man nicht importierte Funktionen verwenden möchte Risiko von Namensverwirrungen, z. B. gibt es ceil-Funktionen in den Bibliotheken math, numpy und torch.

Bibliotheken in Thonny installieren

Weblinks