Bonjour, Habr! Je vous présente la traduction de l'article "Equivalents en Python et JavaScript. Partie 1" .
Malgré le fait que Python et Javascript soient très différents, il existe de nombreuses similitudes que tout développeur de pile complète devrait connaître. Dans cette série de 4 articles, nous verrons ce qui est commun dans les deux langues, et examinerons un certain nombre de problèmes connus ainsi que les moyens de les résoudre.
Ce n'est pas une référence, il n'y aura pas d'informations de base sur les types de variables, ifs et boucles.
Mais nous examinerons des structures de données et des opérations plus complexes avec elles en utilisant Python et Javascript.
Je vais également illustrer cela avec des exemples pratiques.
Cette série intéressera les backders utilisant Django, Flask ou tout autre framework Python qui souhaite en savoir plus sur Javascript moderne. D'un autre côté, ces articles seront utiles aux avant-gardistes qui souhaitent mieux comprendre le fonctionnement du backend, voire écrire leur site sur Django.
Autres articles de cette série:
- Deuxième partie : JSON, habitués, erreurs d'exception
- Troisième partie : Python et JS modernes: modèles de chaînes (lignes f), décompression de liste, fonctions lambda, itérations de liste, générateurs, ensembles.
- La quatrième partie concerne les arguments de fonction, la création et l'utilisation de classes, l'héritage, les accesseurs de définition et les propriétés de classe.
Type fonte
Commençons par lancer la chaîne dans son ensemble. En Python, tout est simple et direct:
number = int(text)
Mais dans JS, vous devez expliquer à quel système vous allez conduire - décimal, octal, hexadécimal ou binaire:
number = parseInt(text, 10);
Pour utiliser le système décimal habituel, nous passons 10 comme deuxième argument à la fonction parseInt (). 8 pour octal, 16 pour hex ou 2 pour binaire. Si le deuxième paramètre est omis, le nombre commence à zéro et vous utilisez un navigateur obsolète, la ligne avec le texte sera interprétée comme un système octal:
parseInt('012') == 10
Affectation conditionnelle
Bien que Python et JS utilisent une syntaxe différente pour cela, cette opération est populaire dans les deux langues. Il est populaire car dans une expression, il est possible d'attribuer des valeurs différentes pour les cas vrai et faux.
À partir de Python 2.7, l'affectation conditionnelle ressemble à ceci:
value = 'YES' if positive == True else 'NO'
En JavaScript, l'affectation conditionnelle se fait à l'aide d'un opérateur ternaire ?
, ainsi qu'en C, C ++, C #, Java, Ruby, PHP, Perl, Swift et ActionScript:
value = positive === true? 'YES': 'NO';
Accéder à une propriété d'objet par nom de propriété
La manière habituelle d'accéder à une propriété d'objet en Python et JS est la même:
obj.color = 'YELLOW'
Mais que se passe-t-il si le nom de la propriété est enfermé dans une variable de chaîne? Par exemple, le nom de la propriété peut être obtenu à partir de la liste des propriétés ou le nom de la propriété est composé de deux variables de chaîne: "title" + land_code
.
En Python, les fonctions getattr()
et setattr()
existent pour cela:
attribute = 'color' value = getattr(obj, attribute, 'GREEN') setattr(obj, attribute, value)
Dans JS, vous pouvez traiter un objet comme un dictionnaire et passer le nom de la propriété entre crochets:
attribute = 'color'; value = obj[attribute] || 'GREEN'; obj[attribute] = value;
Pour obtenir la valeur par défaut si une propriété du même nom n'existe pas, la fonction getattr()
en Python a un troisième paramètre pour cela. Dans JS, si la propriété demandée est manquante, la fonction renverra undefined
. Elle peut être comparée à l'opérateur OR
avec la valeur par défaut - c'est une pratique standard dans JS - cette méthode peut être trouvée dans de nombreux frameworks et bibliothèques.
Accès au dictionnaire des clés
Similaire à ce qui précède. La clé est généralement indiquée entre crochets dans les deux langues:
dictionary = {} dictionary['color'] = 'YELLOW'
Pour l'accès aux clés, Python utilise une syntaxe standard avec des crochets, cependant, si une telle clé est manquante, cela KeyError
une exception avec une erreur KeyError
.
Plus flexible est la méthode get()
, qui retournera None
s'il n'y a pas de clé. Vous pouvez également transmettre une valeur qui sera retournée si la clé est manquante:
key = 'color' value = dictionary.get(key, 'GREEN')
Dans JS, vous pouvez faire la même astuce qu'avec une propriété d'objet - OR
avec une valeur par défaut:
key = 'color'; value = dictionary[key] || 'GREEN';
Tranches: listes et chaînes
Python possède un opérateur [:]
obtenir une partie d'une liste, un tuple ou des structures similaires. Un exemple avec un objet de type Django QuerySets
:
items = [1, 2, 3, 4, 5] first_two = items[:2]
JS a une méthode slice()
avec le même effet:
items = [1, 2, 3, 4, 5]; first_two = items.slice(0, 2);
Mais ne confondez pas avec la méthode splice()
qui modifie le tableau d'origine!
En Python, l'opérateur [:]
s'applique également aux chaînes:
text = 'ABCDE' first_two = text[:2]
Dans JS, les chaînes ont également une méthode slice()
:
text = 'ABCDE'; first_two = text.slice(0, 2);
Liste des opérations
En programmation, vous devez souvent collecter et analyser une séquence d'éléments. En Python, les listes sont généralement utilisées pour cela, et en Javascript, les tableaux. Ils ont une syntaxe et des opérations similaires, mais différentes méthodes pour ajouter et supprimer des éléments.
Nous connectons les deux listes, ajoutons un élément à la fin, ajoutons un élément au début, récupérons et supprimons l'élément au début, récupérons et supprimons l'élément de la fin et supprimons l'élément spécifique par index.
Python:
items1 = ['A'] items2 = ['B'] items = items1 + items2
Idem en Javascript:
items1 = ['A']; items2 = ['B']; items = items1.concat(items2);
Rejoindre des ensembles de chaînes
Combinez un ensemble d'éléments de chaîne en une seule ligne en utilisant un espace, une virgule ou une nouvelle ligne comme caractère de connexion.
En Python, la méthode de chaîne join()
est utilisée pour cela, qui prend une liste ou un tuple comme argument. Pour les non initiés (en syntaxe Python), il peut sembler étrange de commencer une expression avec un séparateur, mais après une utilisation régulière, vous vous habituerez à cette forme de notation:
items = ['A', 'B', 'C'] text = ', '.join(items)
Dans JS, les tableaux ont une méthode join()
avec un séparateur comme argument:
items = ['A', 'B', 'C']; text = items.join(', ');
Pour résumer
- Les listes et les tuples en Python correspondent aux tableaux en Javascript.
- Les dictionnaires en Python correspondent aux objets en Javascript.
- Les chaînes en Python sont similaires aux chaînes en Javascript.
- En Javascript, transformez une chaîne en un nombre avec soin, en vous souvenant des systèmes numériques.
- Des expressions conditionnelles sur une seule ligne existent dans leurs langues.
- La combinaison de séquences de chaînes (
' '.join
) en Python décourage les non initiés dans la syntaxe, mais vous vous y ' '.join
rapidement.
Dans la prochaine série, nous examinerons la création et l'analyse de JSON, les expressions régulières et la gestion des erreurs et exceptions!