Leitfaden für JavaScript-Entwickler
Python für JavaScript-Entwickler: Lerne Python mit dem, was du schon weißt
Du kennst schon JavaScript? Entdecke, wie sich vertraute Programmierkonzepte in Python übersetzen, was anders funktioniert und wie du am schnellsten produktiv wirst.
JavaScript 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.
Variablen: let, const und undefined
let count = 0;
const limit = 10;
let missing; // undefinedcount = 0
LIMIT = 10 # constant by convention only
missing = NonePython kennt weder let noch const: Die Zuweisung erzeugt den Namen, und ein Name in Großbuchstaben ist nur eine Konvention. Es gibt kein undefined: Das Lesen eines nie zugewiesenen Namens löst NameError aus, ein fehlender Schlüssel löst KeyError aus, und None ist ein ausdrücklicher leerer Wert.
Objekte und Dictionaries
const user = { name: "Ada", age: 36 };
user.email = "ada@example.com";
delete user.age;
console.log("name" in user);user = {"name": "Ada", "age": 36}
user["email"] = "ada@example.com"
del user["age"]
print("name" in user)Dictionaries verwenden [] mit String-Schlüsseln, nie Punktnotation, und user.get("age") liefert None, statt KeyError auszulösen. Ein Dictionary enthält nur Daten: Für Daten mit Verhalten definierst du eine Klasse.
map/filter und Comprehensions
const doubled = nums
.filter(n => n > 0)
.map(n => n * 2);doubled = [n * 2 for n in nums if n > 0]
square = lambda n: n * nEine Comprehension ersetzt die meisten filter- und map-Ketten. Python hat auch lambda, aber nur für einen einzelnen Ausdruck – nutze def für alles Längere; eine Pfeilfunktions-Syntax gibt es nicht. Die eingebauten Python-Versionen liefern lazy Iteratoren, keine Listen.
async/await
async function loadAll(urls) {
return Promise.all(urls.map(fetchText));
}import asyncio
async def load_all(urls):
return await asyncio.gather(*(fetch_text(url) for url in urls))async und await sehen ähnlich aus, aber eine Python-Coroutine startet erst, wenn sie awaited oder eingeplant wird, während ein JavaScript-Promise sofort losläuft. Python bringt keine laufende Event-Loop mit: Starte eine mit asyncio.run(...).
Was JavaScript-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; Semikolons sind nicht nötig. Nutze vier Leerzeichen und bleibe konsequent.
Wahrheitswerte und Typen unterscheiden sich
Leere Listen, Dictionaries und Strings gelten in Python als falsch, anders als ein leeres Array in JavaScript, und
Noneersetzt sowohlnullals auchundefined. Vergleiche mitis None, nicht mit==.Comprehensions ersetzen map und filter
Eine Comprehension wie
[n * 2 for n in nums if n > 0]erledigt die Arbeit vonfiltergefolgt vonmapin einer lesbaren Zeile.Setze auf eingebaute Sammlungen
Listen, Dictionaries, Sets und Tupel decken ab, wofür du Arrays, Objekte,
MapundSetnutzt. Mitinprüfst du die Zugehörigkeit, undlen(items)ersetzt.length.Schreibe Python, nicht JavaScript in Python
Verzichte auf Callbacks, wo eine Schleife oder Comprehension besser lesbar ist. Nutze
snake_casestattcamelCasesowieand,or,notstatt&&,||,!.
Dein Fahrplan von JavaScript 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 JavaScript-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