Python: Python lernen

Ein umfassender Python-Leitfaden

👋 Willkommen bei der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Python-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:

  • Deployen Sie Ihre Anwendung in Sekundenschnelle mit einem einfachen git push.
  • Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
  • Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
  • Erhalten Sie optimale Leistung und robuste Sicherheit dank einer privaten und dedizierten VM.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Python-Cloud-Hosting-Lösung von Stackhero auszuprobieren!

Dieser Leitfaden bietet einen Überblick über wesentliche Python-Konzepte und -Syntax. Er dient als schnelle Auffrischung für erfahrene Entwickler und als freundliche Einführung für Anfänger. Von grundlegenden Datentypen bis hin zu fortgeschrittenen Funktionen deckt dieses Cheatsheet Themen wie Kontrollfluss, Funktionen, Klassen, Objekte und gängige Module ab. Halten Sie es griffbereit als schnelle Referenz bei der Arbeit an Python-Projekten. Beachten Sie, dass Python ein umfangreiches Ökosystem von Bibliotheken und Frameworks hat, daher wird das Erkunden zusätzlicher Ressourcen und Dokumentationen Ihnen helfen, tiefer in spezialisierte Themen einzutauchen.

Viel Spaß beim Programmieren!

Python ist eine vielseitige, hochentwickelte Programmiersprache, die von Guido van Rossum entwickelt und erstmals 1991 veröffentlicht wurde. Sie ist bekannt für ihre Lesbarkeit und Einfachheit, was sie sowohl für Anfänger als auch für erfahrene Entwickler zu einer ausgezeichneten Wahl macht. Python wird weit verbreitet in der Webentwicklung, Datenanalyse, künstlichen Intelligenz, maschinellem Lernen und Automatisierung eingesetzt, um nur einige Bereiche zu nennen.

Einige gängige Anwendungsfälle für Python umfassen den Aufbau von Webanwendungen mit Frameworks wie Django oder Flask, die Analyse und Visualisierung von Daten mit Bibliotheken wie pandas und matplotlib sowie die Entwicklung von maschinellen Lernmodellen mit Tools wie TensorFlow und scikit-learn.

Die umfangreiche Standardbibliothek von Python und das florierende Ökosystem von Drittanbieter-Paketen machen es zu einer leistungsstarken und flexiblen Sprache für eine breite Palette von Programmieraufgaben.

Die grundlegenden Datentypen von Python umfassen Ganzzahlen (ganze Zahlen), Gleitkommazahlen (Zahlen mit Dezimalstellen), Booleans (wahr/falsch Werte) und Strings (Zeichenfolgen):

  • int: Ganzzahl, z.B. 42
  • float: Gleitkommazahl, z.B. 3.14
  • bool: Boolean, z.B. True oder False
  • str: String, z.B. "hello"

Beispiel:

integer = 42
floating_point = 3.14
boolean = True
string = "Hello, World!"

Python bietet mehrere Datenstrukturen, um Daten effizient zu organisieren, zu speichern und zu manipulieren. Die am häufigsten verwendeten sind Listen, Tupel, Wörterbücher und Mengen. Listen und Tupel halten eine geordnete Sequenz von Elementen, Wörterbücher speichern Schlüssel-Wert-Paare und Mengen speichern einzigartige Elemente. Jede Struktur bietet eine Reihe von Methoden, die auf spezifische Anwendungsfälle zugeschnitten sind.

  • Liste: my_list = [1, 2, 3, 4]
  • Tupel: my_tuple = (1, 2, 3, 4)
  • Wörterbuch: my_dictionary = {'key1': 'value1', 'key2': 'value2'}
  • Menge: my_set = {1, 2, 3, 4}

Listen sind veränderbare, geordnete Sammlungen von Elementen. Sie erlauben Duplikate und können Elemente verschiedener Datentypen enthalten, einschließlich anderer Listen, Tupel, Wörterbücher oder Mengen. Sie können Elemente einfach hinzufügen, aktualisieren und entfernen. Listen werden in eckigen Klammern [] mit durch Kommas getrennten Elementen definiert.

Wichtige Punkte zu Listen:

  1. Veränderbar und geordnet
  2. Erlauben doppelte Elemente
  3. Behalten die Reihenfolge bei, in der Elemente hinzugefügt werden
  4. Unterstützen mehrere Datentypen
  5. Bieten Operationen zum Hinzufügen, Aktualisieren und Löschen von Elementen

Listen werden häufig verwendet, wenn Sie eine dynamische und anpassbare Sammlung von Elementen benötigen.

Beispiele:

# Erstellen einer Liste
my_list = [1, 2, 3, 4, 5]

# Zugriff auf Elemente
print(my_list[0])  # Ausgabe: 1
print(my_list[-1])  # Ausgabe: 5

# Elemente hinzufügen
my_list.append(6)
print(my_list)  # Ausgabe: [1, 2, 3, 4, 5, 6]

# Elemente aktualisieren
my_list[0] = 0
print(my_list)  # Ausgabe: [0, 2, 3, 4, 5, 6]

# Elemente löschen
del my_list[0]
print(my_list)  # Ausgabe: [2, 3, 4, 5, 6]

Wörterbücher sind veränderbare, ungeordnete Sammlungen von Schlüssel-Wert-Paaren. Jeder Schlüssel muss eindeutig sein, und Sie können diese Schlüssel verwenden, um auf ihre zugehörigen Werte zuzugreifen. Wie Listen können Wörterbücher Elemente verschiedener Datentypen speichern, einschließlich verschachtelter Sammlungen. Sie werden in geschweiften Klammern {} mit durch Kommas getrennten Schlüssel-Wert-Paaren und durch Doppelpunkte getrennten Schlüsseln und Werten definiert.

Wichtige Punkte zu Wörterbüchern:

  1. Veränderbare und ungeordnete Sammlung
  2. Besteht aus Schlüssel-Wert-Paaren mit eindeutigen Schlüsseln
  3. Zugriff auf Werte mit Schlüsseln
  4. Speichern verschiedene Datentypen

Wörterbücher sind ideal für Aufgaben, bei denen Sie Nachschlagevorgänge durchführen müssen, wie z.B. Konfigurationseinstellungen oder Häufigkeitszählungen.

Beispiele:

# Erstellen eines Wörterbuchs
my_dictionary = {'a': 1, 'b': 2, 'c': 3}

# Zugriff auf Elemente
print(my_dictionary['a'])  # Ausgabe: 1

# Elemente hinzufügen
my_dictionary['d'] = 4
print(my_dictionary)  # Ausgabe: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# Elemente aktualisieren
my_dictionary['a'] = 0
print(my_dictionary)  # Ausgabe: {'a': 0, 'b': 2, 'c': 3, 'd': 4}

# Elemente löschen
del my_dictionary['a']
print(my_dictionary)  # Ausgabe: {'b': 2, 'c': 3, 'd': 4}

Tupel sind unveränderliche, geordnete Sammlungen von Elementen. Sie funktionieren ähnlich wie Listen, außer dass, sobald ein Tupel erstellt wurde, seine Elemente nicht geändert, hinzugefügt oder entfernt werden können. Tupel werden mit runden Klammern () mit durch Kommas getrennten Elementen definiert.

Wichtige Punkte zu Tupeln:

  1. Unveränderbare und geordnete Sammlung
  2. Unterstützen mehrere Datentypen
  3. Struktur fester Größe

Tupel sind nützlich, wenn Sie eine unveränderliche Sammlung benötigen oder wenn Sie die Sammlung als Wörterbuchschlüssel verwenden möchten.

Beispiel:

# Erstellen eines Tupels
my_tuple = (1, 2, 3, 4, 5)

# Zugriff auf Elemente
print(my_tuple[0])  # Ausgabe: 1
print(my_tuple[-1])  # Ausgabe: 5

# Hinweis: Tupel sind unveränderlich

Mengen sind veränderbare, ungeordnete Sammlungen, die einzigartige Elemente speichern. Sie entfernen automatisch Duplikate und behalten keine Reihenfolge bei. Mengen können Elemente verschiedener Datentypen enthalten, mit Ausnahme veränderbarer Typen wie Listen und Wörterbücher. Sie können mit geschweiften Klammern {} oder dem set()-Konstruktor definiert werden.

Wichtige Punkte zu Mengen:

  1. Veränderbar und ungeordnet
  2. Speichern nur einzigartige Elemente, entfernen automatisch Duplikate
  3. Schließen veränderbare Typen aus (wie Listen und Wörterbücher)

Mengen sind ideal für Mitgliedschaftstests, Deduplizierung und Mengenoperationen wie Vereinigung, Schnittmenge und Differenz.

# Erstellen einer Menge
my_set = {1, 2, 3, 4, 5}

# Mitgliedschaft prüfen
print(1 in my_set)  # Ausgabe: True

# Ein Element hinzufügen
my_set.add(6)
print(my_set)  # Ausgabe: {1, 2, 3, 4, 5, 6}

# Aktualisieren durch Entfernen eines Elements und Hinzufügen eines anderen
my_set.remove(1)
my_set.add(0)
print(my_set)  # Ausgabe: {0, 2, 3, 4, 5, 6}

# Ein Element löschen
my_set.remove(0)
print(my_set)  # Ausgabe: {2, 3, 4, 5, 6}

Bedingte Anweisungen ermöglichen es Ihnen, Code basierend darauf auszuführen, ob eine Bedingung wahr oder falsch ist.

if condition1:
  # etwas tun
elif condition2:
  # etwas anderes tun
else:
  # eine andere Sache tun

Beispiel:

x = 42

if x > 50:
  print("x ist größer als 50")
elif x < 50:
  print("x ist kleiner als 50")
else:
  print("x ist gleich 50")

for-Schleifen iterieren über eine Sequenz, wie eine Liste oder einen Bereich, und führen für jedes Element einen Codeblock aus.

Beispiel:

for i in range(5):
  print(i)

while-Schleifen führen einen Codeblock aus, solange eine angegebene Bedingung wahr ist.

Beispiel:

i = 0
while i < 5:
  print(i)
  i += 1

Funktionen kapseln Code in wiederverwendbare Blöcke, die Eingaben (Argumente) akzeptieren und Ausgaben zurückgeben können. Sie werden mit dem Schlüsselwort def definiert und können mit ihrem Namen aufgerufen werden.

def function_name(argument1, argument2=default_value):
  # etwas tun
  return result

Beispiel:

def add(a, b):
  return a + b

result = add(3, 4)
print(result)  # Ausgabe: 7

Lambda-Funktionen, auch als anonyme Funktionen bekannt, sind prägnante Einzelausdruck-Funktionen, die mit dem Schlüsselwort lambda erstellt werden. Sie werden häufig für kurze Operationen verwendet, oft als Argumente für Funktionen wie map(), filter() oder sorted().

lambda arguments: expression

Beispiel:

add = lambda a, b: a + b
result = add(3, 4)
print(result)  # Ausgabe: 7

Listenverständnisse ermöglichen es Ihnen, Listen in einer einzigen, lesbaren Zeile zu erstellen, indem Sie einen Ausdruck mit einer Schleife und einer optionalen Bedingung kombinieren. Sie sind hervorragend zum Transformieren oder Filtern von Daten geeignet.

new_list = [expression for item in iterable if condition]

Beispiel:

squares = [x * x for x in range(1, 6)]
print(squares)  # Ausgabe: [1, 4, 9, 16, 25]

Die Ausnahmebehandlung ermöglicht es Ihrem Programm, Laufzeitfehler elegant zu verwalten. Python bietet die Blöcke try, except und finally, um Ausnahmen abzufangen und zu behandeln, sodass Ihr Programm reibungslos fortgesetzt oder beendet wird.

try:
    # Code, der eine Ausnahme auslösen kann
except ExceptionType as error_variable:
    # Ausnahme behandeln
finally:
    # Code, der unabhängig davon ausgeführt wird, ob eine Ausnahme aufgetreten ist

Beispiel:

try:
  result = 10 / 0
except ZeroDivisionError:
  print("Kann nicht durch Null teilen!")

Klassen definieren Blaupausen zum Erstellen von Objekten in der objektorientierten Programmierung (OOP). Objekte sind Instanzen einer Klasse mit Attributen (Daten) und Methoden (Funktionen), die spezifische Aufgaben ausführen. OOP fördert strukturierten, wiederverwendbaren und wartbaren Code.

class ClassName:
  def __init__(self, attribute1, attribute2):
    self.attribute1 = attribute1
    self.attribute2 = attribute2

  def method_name(self, argument1):
    # etwas tun
    return result

Beispiel:

class Dog:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def bark(self):
    print("Woof!")

# Erstellen einer Instanz von Dog
dog1 = Dog("Buddy", 3)
dog1.bark()  # Ausgabe: Woof!

Module sind separate Dateien, die Python-Code wie Funktionen, Klassen oder Variablen enthalten. Das Importieren von Modulen ermöglicht es Ihnen, die Funktionalität Ihres Programms durch die Verwendung externer Bibliotheken und Frameworks zu erweitern.

import module_name
from module_name import specific_function_or_class

Beispiel:

import math
print(math.sqrt(16))  # Ausgabe: 4.0

Datei-Eingabe/Ausgabe (I/O) umfasst das Lesen und Schreiben von Dateien in Python. Dies ist unerlässlich, wenn Sie mit Datenspeicherung und -abruf arbeiten.

with open('filename.txt', 'r') as file:
  content = file.read()
with open('filename.txt', 'w') as file:
  file.write('Inhalt, der in die Datei geschrieben werden soll')

Kontextmanager helfen bei der Verwaltung von Ressourcen, wie Dateien oder Netzwerkverbindungen, und stellen sicher, dass sie ordnungsgemäß erworben und freigegeben werden. Die Verwendung eines Kontextmanagers stellt sicher, dass Ihr Code sauberer und fehlertoleranter ist.

with resource as alias:
  # Ressource als Alias verwenden

Beispiel:

with open('file.txt', 'r') as file:
  content = file.read()
  print(content)  # Ausgabe: Hello, World!

Dekoratoren ermöglichen es Ihnen, das Verhalten von Funktionen oder Klassen zu erweitern oder zu ändern, ohne deren Quellcode zu ändern. Sie umschließen eine andere Funktion und fügen vor oder nach der Ausführung der umschlossenen Funktion einige Funktionalitäten hinzu.

def decorator_function(func):
  def wrapper(*args, **kwargs):
    # etwas tun, bevor die Funktion aufgerufen wird
    result = func(*args, **kwargs)
    # etwas tun, nachdem die Funktion aufgerufen wurde
    return result
  return wrapper

@decorator_function
def my_function():
  # etwas tun

Beispiele:

def greet_decorator(func):
  def wrapper(name):
    return "Hello, " + func(name) + "!"
  return wrapper

@greet_decorator
def get_name(name):
  return name

print(get_name("John"))  # Ausgabe: Hello, John!

Das itertools-Modul bietet Funktionen zum Erstellen und Arbeiten mit Iteratoren. Es umfasst unendliche Iteratoren (wie count, cycle und repeat), endliche Iteratoren (wie accumulate, chain, compress) und kombinatorische Iteratoren (wie product, permutations und combinations).

Beispiel:

import itertools

for i in itertools.count(5, 5):
  if i > 20:
    break
  print(i)  # Ausgabe: 5, 10, 15, 20

Das collections-Modul bietet spezialisierte Container-Datentypen, die Ihre Programme verbessern können.

from collections import namedtuple, defaultdict, Counter, deque

Beispiele:

from collections import namedtuple, deque, Counter, OrderedDict, defaultdict

# namedtuple
Person = namedtuple('Person', 'name age')
person1 = Person("Alice", 30)
print(person1.name, person1.age)  # Ausgabe: Alice 30

# deque
dq = deque([1, 2, 3, 4, 5])
dq.append(6)
dq.appendleft(0)
print(dq)  # Ausgabe: deque([0, 1, 2, 3, 4, 5, 6])

# Counter
count = Counter("hello world")
print(count)  # Ausgabe: Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})

# OrderedDict
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
print(od)  # Ausgabe: OrderedDict([('a', 1), ('b', 2), ('c', 3)])

# defaultdict
dd = defaultdict(int)
dd['a'] += 1
dd['b'] += 2
print(dd)  # Ausgabe: defaultdict(<class 'int'>, {'a': 1, 'b': 2})

Reguläre Ausdrücke ermöglichen leistungsstarke Textverarbeitung und -manipulation. Das re-Modul bietet Funktionen wie match, search, findall, finditer, split und sub.

Beispiel:

import re

pattern = r'\d+'
result = re.findall(pattern, "There are 10 cats and 5 dogs.")
print(result)  # Ausgabe: ['10', '5']

Die Arbeit mit Daten und Zeiten ist eine häufige Anforderung, insbesondere für Datenanalyse- oder Planungsaufgaben. Das datetime-Modul bietet Klassen und Funktionen zum Arbeiten mit Daten, Zeiten und Intervallen.

import datetime

# datetime, date, time, timedelta, timezone

Beispiele:

from datetime import datetime, timedelta

# Aktuelles Datum und Uhrzeit
current_time = datetime.now()
print("Aktuelles Datum und Uhrzeit:", current_time)

# Benutzerdefiniertes Datum und Uhrzeit
custom_date = datetime(2022, 12, 31, 23, 59, 59)
print("Benutzerdefiniertes Datum und Uhrzeit:", custom_date)

# Zeichenfolge in datetime konvertieren
date_str = "2023-01-01 00:00:00"
date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("Zeichenfolge in datetime:", date_obj)

# Datetime in Zeichenfolge konvertieren
date_str2 = date_obj.strftime("%Y-%m-%d %H:%M:%S")
print("Datetime in Zeichenfolge:", date_str2)

# Datum- und Uhrzeitarithmetik
one_day = timedelta(days=1)
yesterday = current_time - one_day
tomorrow = current_time + one_day
print("Gestern:", yesterday)
print("Morgen:", tomorrow)

Listenslicing ermöglicht es Ihnen, einen Teil einer Liste oder eines anderen Sequenztyps zu extrahieren, indem Sie Start-, End- und optionale Schrittwerte angeben. Diese Funktion ist sehr nützlich zum Extrahieren von Untersequenzen.

my_list[start:end:step]

Beispiel:

my_list = [0, 1, 2, 3, 4, 5]
sub_list = my_list[1:4]
print(sub_list)  # Ausgabe: [1, 2, 3]

String-Formatierung ist der Prozess der Kombination von statischem Text mit dynamischen Werten. Python bietet mehrere Formatierungsmethoden, einschließlich %-Formatierung, der str.format()-Methode und f-Strings (Python 3.6+), die es Ihnen ermöglichen, einfach formatierte Zeichenfolgen zu generieren.

print("Hello, %s" % name)
print("Hello, {}".format(name))
print(f"Hello, {name}")

Beispiel:

name = "John"
age = 30
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)  # Ausgabe: My name is John and I am 30 years old.

Befehlszeilenargumente ermöglichen es Ihnen, Eingabewerte an ein Python-Skript zu übergeben, wenn es von der Befehlszeile aus ausgeführt wird. Die Liste sys.argv bietet Zugriff auf diese Argumente, was es einfach macht, sie innerhalb Ihres Skripts zu analysieren und zu verwenden.

import sys

arguments = sys.argv

Beispiel:

# Speichern Sie diesen Code in einer Datei namens "cmd_args.py"
# Ausführen mit: python cmd_args.py Alice
# Erwartete Ausgabe: Hello, Alice!
import sys

if len(sys.argv) > 1:
  print(f"Hello, {sys.argv[1]}!")
else:
  print("Keine Argumente angegeben.")