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
int count = 3;
count = "three"; // compile error
std::string name = "Ada";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
int value = 10;
int* ptr = &value;
*ptr = 20;
void bump(int& n) { n += 1; }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
std::vector<int> nums = {1, 2, 3};
nums.push_back(4);
// holds only ints, stored side by sidenums = [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
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());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
mypybringen einen Teil der C++-Sicherheit zurück.Iteriere über Elemente, nicht über Indizes
Laufe direkt über die Sammlung. Greife zu
enumerateoderzip, bevor durange(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 einemifam 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. Nutzewith, wo du dich auf RAII verlassen würdest, und schreibe Namen insnake_case.
Dein Fahrplan von C++ zu Python
Vertraute Konzepte übersetzen
Ordne vertraute Syntax und Konzepte Python zu.
Die Besonderheiten von Python lernen
Sammlungen, Funktionen, idiomatischer Stil.
Mit echtem Code üben
Löse kleine Aufgaben, statt nur zu lesen.
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.
numbers = [1, 2, 3, 4, 5, 6]
even_squares = [n * n for n in numbers if n % 2 == 0]
print(even_squares) # [4, 16, 36]Die Comprehension liest sich von links nach rechts: n * n für jedes n in numbers berechnen und nur die geraden behalten. Eine normale for-Schleife mit append funktioniert ebenfalls; die Comprehension ist die idiomatische Kurzform.
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