Guide pour les développeurs C++
Python pour les développeurs C++ : apprends Python à partir de ce que tu sais déjà
Tu connais déjà C++ ? 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.
C++ 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.
Typage statique et typage dynamique
int count = 3;
count = "three"; // compile error
std::string name = "Ada";count = 3
count = "three" # allowed
name: str = "Ada"C++ fixe le type de chaque variable à la compilation. En Python, un nom peut être relié à une valeur de n'importe quel type, et les types ne sont vérifiés qu'à l'exécution de la ligne. Les annotations comme name: str sont lues par des outils tels que mypy, pas imposées à l'exécution, et les entiers ne débordent jamais.
Mémoire, pointeurs et références
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 n'a ni pointeurs ni gestion manuelle de la mémoire : chaque nom est une référence vers un objet, et les objets sont libérés quand plus rien n'y fait référence. b = a copie la référence, pas la liste. Les entiers et les chaînes sont immuables : n += 1 dans une fonction relie un nom local au lieu de modifier la valeur de l'appelant.
std::vector et listes
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 stocke des valeurs d'un seul type côte à côte en mémoire. Une liste Python stocke des références vers des objets : elle peut donc mélanger les types, ce qui est souple mais plus lourd et plus lent pour de grandes quantités de données numériques. Utilise le module array ou NumPy pour un stockage numérique compact.
Boucles et algorithmes STL
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()La plupart des algorithmes STL deviennent des compréhensions ou des fonctions intégrées comme sum, min, max, any et all, et tu passes la collection elle-même plutôt qu'une paire d'itérateurs. nums.sort() trie sur place, tandis que sorted(nums) renvoie une nouvelle liste.
Ce que les développeurs C++ 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, pas par des accolades. Utilise quatre espaces et reste cohérent.
Les types sont vérifiés à l'exécution
Le typage dynamique signifie qu'un nom peut référencer n'importe quelle valeur, et les erreurs de type apparaissent quand la ligne s'exécute. Des annotations de type facultatives et un vérificateur comme
mypyte rendent une partie de la sécurité de C++.Itère sur les éléments, pas sur les indices
Parcours directement la collection. Pense à
enumerateouzipavant d'écrirerange(len(items)).Appuie-toi sur les collections intégrées
Listes, dictionnaires, ensembles et tuples couvrent l'essentiel de ce que tu importes depuis la STL. Une compréhension comme
[len(w) for w in words]remplace une boucle simple qui construit une liste ; ajoute unifà la fin pour filtrer.Pas de gestion manuelle de la mémoire
Il n'y a ni pointeur à gérer ou libérer, ni séparation entre en-tête et implémentation, ni section
private:: Python nettoie les objets pour toi. Utilisewithlà où tu t'appuierais sur RAII, et écris les noms ensnake_case.
Ta feuille de route de C++ 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 C++ 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