03/03/2022

Python Grundlagen

Python ist eine universelle Programmiersprache, die in verschiedenen Bereichen Anwendung findet.

Python -Übersicht

Python wurde mit dem Ziel größter Einfachheit und Übersichtlichkeit entworfen. Es ist sehr vielfältig und kann viele Anwendungsfelder abdecken.
Bei Python handelt es sich um eine Programmiersprache mit einer klaren Syntax und guten Lesbarkeit. Sie gilt als leicht zu erlernen und ist in den gängigen Betriebssystemen ausführbar. Im Vergleich mit anderen Programmiersprachen (wie zum Beispiel Java oder C) kommt Python mit weniger Code zu gleichen Ergebnissen.

Python ist eine Multiparadigmensprache. Das bedeutet, dass Python den Programmierer nicht zu einem einzigen Programmierstil zwingt, sondern erlaubt, das für die jeweilige Aufgabe am besten geeignete Paradigma zu wählen.

Auf einen Blick

  • Leicht zu erlernen
  • Gute Lesbarkeit und klare Syntax
  • In den gängigen Betriebssystemen ausführbar
  • Mächtig: kommt mit weniger Code als andere Programmiersprachen zu gleichen Ergebnissen
  • Multiparadigmensprache

Standardbibliothek

Python bietet eine umfangreiche Standardbibliothek mit einer Vielzahl an Modulen, die bei einer Standardinstallation von Python direkt mitgeliefert werden. Diese Module bieten viele Lösungen, die man sich ansonsten mühsam durch eigene Programme erarbeiten müsste. Darin stecken unzählige Stunden an gesparter Arbeit, wenn man einen Überblick über die verfügbaren Module und deren Möglichkeiten hat.
Die große Standardbibliothek von Python, die allgemein als eine ihrer größten Stärken bezeichnet wird, bietet Werkzeuge, die für viele Aufgaben geeignet sind. Für Anwendungen mit Internetzugriff werden viele Standardformate und -Protokolle wie MIME und HTTP unterstützt. Es enthält Module zum Erstellen grafischer Benutzeroberflächen, zum Verbinden mit relationalen Datenbanken, zum Generieren von Pseudozufallszahlen, zum Rechnen mit beliebig genauen Dezimalzahlen, zum Manipulieren regulärer Ausdrücke und zum Unit Testing.

Auf einen Blick

  • Internetanwendungen
  • Erstellen grafischer Benutzeroberflächen
  • Verbinden mit relationalen Datenbanken
  • Generieren von Pseudozufallszahlen
  • Rechnen mit beliebig genauen Dezimalzahlen
  • Manipulieren regulärer Ausdrücke
  • Unit-Testing

Programmierparadigmen

Ein Paradigma kann auch als Methode zur Lösung von Problemen oder Aufgaben bezeichnet werden. Ein Programmierparadigma ist ein Ansatz zur Lösung des Problems mit einer Programmiersprache. Man kann es sich als gut aufeinander abgestimmte Werkzeug- oder Techniksammlung vorstellen, die uns zur Verfügung steht. Ein Programmierparadigma ist eine von Programmiersprachen unabhängige Idee, wie Programme geschrieben werden - jedoch bietet jede Sprache für verschiede Paradigmen unterschiedlich viel Unterstützung an.

Die folgenden Paradigmen sind im Zusammenhang mit Python populär:

  • Objektorientierte Programmierung (OOP) - Code wird in widerverwendbaren Klassenhierarchien organisiert, welche die zugrundeliegende Domäne abbilden.
  • Verfahrensorientierte / Prozedurale Programmierung - Code wird in Funktionen oder Prozeduren organisiert, welche eine Liste von Befehlen für den Computer enthalten.
  • Funktionsorientierte Programmierung - Funktionen werden wie Daten behandelt, können also als Argumente übergeben oder als Rückgabewerte geliefert werden.

Datentypen und Strukturen

Datentypen sind in Python die Gestalt oder die Erscheinungsart von Werten. Das können entweder ganze Zahlen, Fließkommazahlen, Zeichenketten, Boolesche Variablen, Listen oder Tupel sein.

Grundlegende (primitive) Datentypen

  • Boolean – boolesche Werte, "Wahr" / "True" oder "Falsch" / "False"
  • Numerische Typen
    • int – ganze Zahlen
    • float – Fließkommazahlen
    • complex – komplexe Zahlen
is_friday = True
number_of_participants = 5
temperature = 22.125
my_complex_num = complex('1+2j')

Sammeltypen

Sammeltypen enthalten mehrere Werte. Diese können grundlegende oder komplexe Typen haben.

  • Sequenzen
    • list – Sammlung von Elementen
    • tuple – wie Listen, aber unveränderlich
    • range – unveränderliche Sequenz von Zahlen
  • str – Listen von (Schrift-)Zeichen (unveränderlich)
  • dict – Abbildungen von Schlüssel auf Werte
shopping_list = ["milk", "sugar", "eggs"]
rgb_colors = ("red", "green", "blue")
zero_to_nine = range(10)

name = "Tim"

secret_identities = {"Superman": "Clark Kent", "Spiderman": "Peter Parker", "Iron Man": "Tony Stark"}
  • Binäre Sequenzen
    • bytes
    • bytearray
    • memoryview
  • Mengen – ungeordnete Sammlung von Elementen
    • set
    • frozenset – unveränderlich

Dynamische Typisierung

Mit der Typisierung werden Variablen oder Konstanten in Programmiersprachen bestimmte Typeigenschaften innerhalb des Computersystems zugewiesen. In der Informatik versteht man unter "Typisierung" die Zuweisung eines Objekts zu einem Datentyp.

Der Typ bestimmt sowohl, wie die enthaltenen Daten aufgebaut sind, als auch, welche Operationen damit durchgeführt werden können.

Python ist ein dynamisch typisierte Sprache. Bei dynamisch typisierten Sprachen kann der Datentyp einer Variable von Codezeile zu Codezeile variieren. Es gibt daher nur wenig oder gar keine Typprüfungen durch den Compiler, wodurch Programmierfehler häufig erst zur Laufzeit auffallen. Dafür kann mit diesen Sprachen etwas kompakter programmiert werden, da die Typdeklarationen entfallen.

my_dynamic_variable = "foo"
my_dynamic_variable = 42
my_dynamic_variable = 3.14159265359
my_dynamic_variable = ["foo", 42, my_dynamic_variable]

Syntax

Kontrollstrukturen

Kontrollstrukturen sind klassische Anwendungen von logischen oder vergleichenden Operatoren und spezielle Anweisungsschritte in einer Programmiersprache, mit denen ein Programmierer Entscheidungen über den weiteren Ablauf eines Programms oder Skripts vorgeben kann, wenn bestimmte Bedingungen eintreten. Das nennt man den Programmfluss. Es gibt in der Regel drei Arten von Kontrollflussanweisungen:

  • Entscheidungsanweisungen: Diese suchen aufgrund einer Bedingung einen Programmfluss heraus. Man spricht hier auch von einem Zweig, denn der Programmfluss verzweigt in verschiedene Varianten.
    • Die if-Kontrollstruktur entscheidet, ob eine nachfolgende Anweisung oder ein Block auszuführen ist. Allgemeine Syntax ist folgende:
if <Bedingung>:
 <Anweisung A>

    • Natürlich gibt es auch die Möglichkeit eines alternativen Programmflusses. Dieser wird mit else eingeleitet:
if <Bedingung>:
 <Anweisung A>
 else
 <Alternative Anweisung>
  • Schleifen oder Iterationsanweisungen: Diese wiederholen eine bestimmte Anzahl an Anweisungen so lange, bis ein Abbruchkriterium erfüllt ist.
    • Die while-Schleife
    • Die for-Schleife
  • Sprunganweisungen: Diese verlassen eine Struktur und führen dazu, dass mit der direkten Anweisung hinter der syntaktischen Struktur (Schleife) weitergemacht wird. Eine Schleife wird beendet, wenn die überprüfte Bedingung nicht mehr erfüllt ist.
    • break: Die Anweisung break verlässt eine Syntaxstruktur sofort, wenn diese Stelle im Quelltext erreicht wird
for i in range(5):
 pass

j = 0
while True:
 if j == i:
 break
 else:
 j = j + 1

Interaktive Benutzung

https://gitlab.vlab.fm.fhws.de/ki-hub/python-hello-world

Verbreitung

  • Python ist für die meisten gängigen Betriebssysteme frei erhältlich und bei den meisten Linux-Distributionen im Standardumfang enthalten.
  • Python wird gern in der Lehre eingesetzt, da Python auf der einen Seite einsteigerfreundlich ist, auf der anderen Seite aber auch leistungsfähig und mächtig genug, um theoretische Grundlagen der Programmierung zu vermitteln und um moderne Anwendungen bis hin zu komplexen Datenanalysen, grafischer Programmierung oder Datenbankanwendungen zu entwickeln.
  • In der Wissenschaftsgemeinde genießt Python große Verbreitung, hauptsächlich wegen des einfachen Einstiegs in die Programmierung und der großen Auswahl wissenschaftlicher Bibliotheken. Oft wird Python hier innerhalb eines Jupyter Notebooks genutzt.
  • Python wird von Amateuren und professionellen Entwicklern gleichermaßen genutzt, bei nicht abreißender Beliebtheit unter Webentwicklern, Systemadministratoren und Data-Scientists.
  • Anfang 2020 wurde das erste Bild eines schwarzen Lochs mithilfe von Python zusammengefügt.
  • Netflix’ Streaming-Funktionalität und Teile von Instagram sind darin geschrieben, die Sprache wird bei Weltall-Erkundungen der Nasa eingesetzt, und angehende Data-Scientists bauen ihre ersten Machine-Learning-Applikationen typischerweise mit Python.

Praxis

Installation

Projekte isolieren mit virtualenv

Pakete verwalten mit PyPi und pip

Projektstruktur

README.rst
LICENSE
setup.py
requirements.txt
sample/__init__.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py

Mehr zum Thema Projektstuktur im Hitchhiker’s Guide to Python.

Beispiel: Untertiteldaten

https://gitlab.vlab.fm.fhws.de/ki-hub/python-subtitles

Problem: falsche Indices in SRT-Datei

  • Schritt 1: Googeln

Google-Suche nach python srt

  • Schritt 2: Projekt anlegen
  • Schritt 3: Implementierung


Die Vorlesungsfolien zum Vortrag über Python Grundlagen von Tim Sokollek finden Sie hier.


Mithilfe von Python Bibliotheken ist die nummerische Berechnung, die tabellarische Darstellung und Visualisierung von Daten möglich. Zudem gibt es Python Bibliotheken für maschinelles Lernen. Erfahren Sie mehr zu Python Bibliotheken für Data Science.