Leitfaden für C++-Entwickler

Python für C++-Entwickler: Lerne Python mit dem, was du schon weißt

Du kennst schon C++? Entdecke, wie sich vertraute Programmierkonzepte in Python übersetzen, was anders funktioniert und wie du am schnellsten produktiv wirst.

C++ und Python im direkten Vergleich

Jedes Paar unten erledigt dieselbe Aufgabe. Starte mit dem Code, den du kennst, und sieh dann, wie Python ihn ausdrückt.

Statische und dynamische Typisierung

C++
int count = 3;
count = "three";   // compile error

std::string name = "Ada";
Python
count = 3
count = "three"    # allowed

name: str = "Ada"

C++ legt den Typ jeder Variablen zur Kompilierzeit fest. In Python kann ein Name an einen Wert beliebigen Typs neu gebunden werden, und Typen werden erst geprüft, wenn die Zeile ausgeführt wird. Typannotationen wie name: str lesen Tools wie mypy; zur Laufzeit werden sie nicht erzwungen, und Ganzzahlen laufen nie über.

Speicher, Zeiger und Referenzen

C++
int value = 10;
int* ptr = &value;
*ptr = 20;

void bump(int& n) { n += 1; }
Python
a = [1, 2]
b = a
b.append(3)
print(a)  # [1, 2, 3]

Python kennt weder Zeiger noch manuelle Speicherverwaltung: Jeder Name ist eine Referenz auf ein Objekt, und Objekte werden freigegeben, wenn nichts mehr auf sie verweist. b = a kopiert die Referenz, nicht die Liste. Ganzzahlen und Strings sind unveränderlich, daher bindet n += 1 in einer Funktion einen lokalen Namen neu, statt den Wert des Aufrufers zu ändern.

std::vector und Listen

C++
std::vector<int> nums = {1, 2, 3};
nums.push_back(4);
// holds only ints, stored side by side
Python
nums = [1, 2, 3]
nums.append(4)
mixed = [1, "two", 3.0]

std::vector speichert Werte eines Typs lückenlos hintereinander im Speicher. Eine Python-Liste speichert Referenzen auf Objekte und kann deshalb Typen mischen – flexibel, aber bei großen Zahlenmengen schwerer und langsamer. Für kompakte numerische Speicherung nutzt du das Modul array oder NumPy.

Schleifen und STL-Algorithmen

C++
std::vector<int> evens;
for (int n : nums) {
    if (n % 2 == 0) evens.push_back(n);
}
int total = std::accumulate(nums.begin(), nums.end(), 0);
std::sort(nums.begin(), nums.end());
Python
evens = [n for n in nums if n % 2 == 0]
total = sum(nums)
nums.sort()

Die meisten STL-Algorithmen werden zu Comprehensions oder Built-ins wie sum, min, max, any und all, und du übergibst die Sammlung selbst statt eines Iteratorpaars. nums.sort() sortiert an Ort und Stelle, während sorted(nums) eine neue Liste liefert.

Was C++-Entwickler umlernen müssen

Einige Gewohnheiten lassen sich schlecht übertragen. Diese Umstellungen zählen am meisten.

  • Einrückung ist die Syntax

    Blöcke beginnen mit einem Doppelpunkt und werden durch Einrückung statt durch geschweifte Klammern festgelegt. Nutze vier Leerzeichen und bleibe konsequent.

  • Typen werden zur Laufzeit geprüft

    Dynamische Typisierung bedeutet: Ein Name kann auf jeden Wert verweisen, und Typfehler zeigen sich erst, wenn die Zeile ausgeführt wird. Optionale Typannotationen und ein Prüfer wie mypy bringen einen Teil der C++-Sicherheit zurück.

  • Iteriere über Elemente, nicht über Indizes

    Laufe direkt über die Sammlung. Greife zu enumerate oder zip, bevor du range(len(items)) schreibst.

  • Setze auf eingebaute Sammlungen

    Listen, Dictionaries, Sets und Tupel decken das meiste ab, was du aus der STL importierst. Eine Comprehension wie [len(w) for w in words] ersetzt eine einfache Schleife, die eine Liste aufbaut; mit einem if am Ende filterst du.

  • Keine manuelle Speicherverwaltung

    Du musst keine Zeiger verwalten oder freigeben, es gibt keine Trennung in Header und Implementierung und keinen private:-Abschnitt: Python räumt Objekte für dich auf. Nutze with, wo du dich auf RAII verlassen würdest, und schreibe Namen in snake_case.

Dein Fahrplan von C++ zu Python

  1. Vertraute Konzepte übersetzen

    Ordne vertraute Syntax und Konzepte Python zu.

  2. Die Besonderheiten von Python lernen

    Sammlungen, Funktionen, idiomatischer Stil.

  3. Mit echtem Code üben

    Löse kleine Aufgaben, statt nur zu lesen.

  4. Sicherheit aufbauen

    Schwierigere, realistischere Aufgaben.

Der Lernpfad „Python für Entwickler“ von Hintor richtet sich an Entwickler, die die Sprache wechseln, und enthält praktische Übungen direkt in den Lektionen. Lernpfad „Python für Entwickler“ ansehen

Mini-Aufgabe

Schreibe Python-Code, der aus einer Liste von Ganzzahlen eine neue Liste erzeugt, die nur die Quadrate der geraden Zahlen enthält.

Eingabe
[1, 2, 3, 4, 5, 6]
Erwartete Ausgabe
[4, 16, 36]

Tipp: Eine List Comprehension kann einen if-Filter enthalten, und n % 2 == 0 prüft, ob n gerade ist.

Bereit, dein C++-Wissen in Python-Können zu verwandeln?

Du weißt bereits, wie man programmiert. Jetzt lernst du mit geführten Lektionen und praktischen Übungen, in Python zu denken.

Jetzt Python bei Hintor lernen
Python für C++-Entwickler | Python schneller lernen – Hintor