Guide pour les développeurs JavaScript
Python pour les développeurs JavaScript : apprends Python à partir de ce que tu sais déjà
Tu connais déjà JavaScript ? Découvre comment les concepts de programmation que tu maîtrises se traduisent en Python, ce qui fonctionne différemment et le chemin le plus rapide pour devenir productif.
JavaScript et Python, côte à côte
Chaque paire ci-dessous fait le même travail. Pars du code que tu connais, puis vois comment Python l'exprime.
Variables : let, const et undefined
let count = 0;
const limit = 10;
let missing; // undefinedcount = 0
LIMIT = 10 # constant by convention only
missing = NonePython n'a ni let ni const : l'affectation crée le nom, et un nom en majuscules n'est qu'une convention. Il n'y a pas de undefined : lire un nom jamais affecté lève NameError, une clé absente lève KeyError, et None est une valeur vide explicite.
Objets et dictionnaires
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)Les dictionnaires utilisent [] avec des clés textuelles, jamais la notation pointée, et user.get("age") renvoie None au lieu de lever KeyError. Un dictionnaire ne contient que des données : pour des données avec comportement, définis une classe.
map/filter et compréhensions
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 * nUne compréhension remplace la plupart des chaînes filter et map. Python a aussi lambda, mais limité à une seule expression : utilise def pour tout ce qui est plus long ; il n'existe pas de syntaxe de fonction fléchée. Les versions intégrées de Python renvoient des itérateurs paresseux, pas des listes.
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 et await se ressemblent, mais une coroutine Python ne démarre pas tant qu'elle n'est pas attendue ou planifiée, alors qu'une Promise JavaScript démarre immédiatement. Python ne fournit pas de boucle d'événements déjà active : lance-en une avec asyncio.run(...).
Ce que les développeurs JavaScript doivent désapprendre
Quelques habitudes se transposent mal. Ces changements comptent le plus.
L'indentation, c'est la syntaxe
Les blocs commencent par deux-points et se définissent par l'indentation plutôt que par des accolades, et on n'utilise pas de points-virgules. Utilise quatre espaces et reste cohérent.
Véracité et types diffèrent
Les listes, dictionnaires et chaînes vides sont considérés comme faux en Python, contrairement à un tableau vide en JavaScript, et
Noneremplace à la foisnulletundefined. Compare avecis None, pas avec==.Les compréhensions remplacent map et filter
Une compréhension comme
[n * 2 for n in nums if n > 0]fait le travail defiltersuivi demapen une seule ligne lisible.Appuie-toi sur les collections intégrées
Listes, dictionnaires, ensembles et tuples couvrent ce pour quoi tu utilises les tableaux, les objets,
MapetSet. Utiliseinpour tester l'appartenance etlen(items)au lieu de.length.Écris du Python, pas du JavaScript en Python
Évite les callbacks quand une boucle ou une compréhension se lit mieux. Utilise
snake_caseplutôt quecamelCase, etand,or,notau lieu de&&,||,!.
Ta feuille de route de JavaScript vers Python
Traduire les concepts familiers
Associe la syntaxe et les concepts familiers à Python.
Apprendre les différences de Python
Collections, fonctions, style idiomatique.
S'entraîner sur du vrai code
Résous de petits problèmes, ne fais pas que lire.
Gagner en confiance
Des défis plus réalistes et plus difficiles.
Le parcours Python pour les développeurs de Hintor s'adresse aux développeurs qui changent de langage, avec des exercices pratiques intégrés aux leçons. Découvrir le parcours Python pour les développeurs
Mini-défi
À partir d'une liste d'entiers, écris du code Python qui crée une nouvelle liste contenant uniquement les carrés des nombres pairs.
- Entrée
- [1, 2, 3, 4, 5, 6]
- Sortie attendue
- [4, 16, 36]
Indice : une compréhension de liste peut inclure un filtre if, et n % 2 == 0 teste si n est pair.
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]La compréhension se lit de gauche à droite : calculer n * n pour chaque n de numbers, en ne gardant que les nombres pairs. Une boucle for classique avec append fonctionne aussi ; la compréhension est le raccourci idiomatique.
Prêt à transformer tes connaissances JavaScript en compétences Python ?
Tu sais déjà programmer. Apprends maintenant à penser en Python avec des leçons guidées et de la pratique concrète.
Commencer à apprendre Python sur Hintor