Le langage de programmation Python a beaucoup à offrir. Que vous soyez nouveau dans la programmation ou tout simplement sur Python, vous constaterez qu'il a de nombreuses fonctionnalités qui rendent le code d'écriture naturel. Explorons comment Python fournit des moyens élégants et lisibles de gérer le codage.
Que signifie pythonique?
Chaque langage de programmation a ses propres bizarreries et conventions – voies de faire des choses qui se sentent naturelles dans cette langue. Dans Python, il y a un style et une philosophie particuliers qui encouragent l'écriture de code propre, lisible et élégant. Lorsque les développeurs disent que le code est pythonique, ils signifient qu'il suit ces principes et tire le meilleur parti de ce que Python a à offrir.
Au lieu d'écrire du code qui fonctionne, Python vous encourage à écrire du code qui est également magnifique. Code qui est facile à comprendre en un coup d'œil, même pour quelqu'un qui ne l'a pas écrit. Le code non pythonique semble souvent être écrit dans une autre langue et juste traduit en Python. Le code pythonique embrasse les forces de Python. Cela inclut des choses comme la syntaxe lisible, les intégrés puissants et les one-liners expressifs.
Vous entendrez souvent les développeurs de Python se référer à quelque chose appelé le zen de Python. C'est un ensemble de principes directeurs qui influencent la façon dont Python est écrit. Il est également intégré comme un œuf de Pâques amusant dans la langue.
Pourquoi devriez-vous écrire du code de la manière pythonique?
Vous savez donc ce qu'est le code pythonique. Mais pourquoi faire tout votre possible pour l'écrire? La réponse est simple. C'est parce que cela vous facilite la vie. L'écriture de code pythonique ne consiste pas seulement à suivre des règles de style non écrit ou à montrer des astuces intelligentes. Il s'agit de rendre votre code plus lisible, plus maintenable et souvent plus efficace.
Python regorge de fonctionnalités conçues pour réduire les motifs de passe-partout et répétitifs. Une fois que vous avez appris les idiomes communs, vous vous retrouverez à écrire moins de code pour en faire plus. Apprendre à écrire du code pythonique vous aide à « penser à Python ». Vous commencerez à reconnaître les modèles et à utiliser la bibliothèque standard plus efficacement. De plus, vous vous sentirez plus à l'aise de travailler avec le code Python des autres.
6 exemples de code pythonique
Plongeons-nous dans des exemples sympas de code pythonique qui changera la façon dont vous codez en python.
Inversion de la corde
Commençons par un problème classique: inverser une chaîne. Dans de nombreuses langues, vous écririez une boucle pour itérer à travers chaque personnage pour construire la chaîne inversée.
input_string = 'hello'
reversed_string = ''
for char in input_string:
reversed_string = char + reversed_string
print(reversed_string)
Cela fonctionne bien. Chaque personnage est apparenté pour construire la chaîne inversée. Mais c'est un peu maladroit. Voici la version pythonique:
reversed_string = input_string[::-1]
Juste une ligne. Cela utilise la syntaxe Slice de Python. [::-1] signifie «Prenez toute la chaîne mais reculez».
Vérification de l'adhésion
Disons que vous souhaitez vérifier si un élément particulier existe dans une liste. Dans de nombreuses langues, cela signifie généralement écrire une boucle et certaines conditions.
fruits = ['strawberry', 'orange','apple', 'mango']
found = False
for fruit in fruits:
if fruit == 'apple':
found = True
break
print(found)
C'est beaucoup de code juste pour savoir si « Apple » est dans la liste. Voici comment le faire en Python:
found = 'apple' in fruits
Cette one-liner lit presque comme un anglais simple. Il élimine le besoin de drapeaux manuels et réduit les chances d'introduire des bogues dans votre code.
Vérifier plusieurs conditions avec any()
et all()
Parfois, vous souhaitez vérifier si tous ou tous les éléments d'une liste répondent à une certaine condition. Dans de nombreuses langues, vous utiliseriez une boucle avec des drapeaux ou des compteurs pour ce faire.
has_negative = False
for num in numbers:
if num < 0:
has_negative = True
break
Cela est assez clair, mais cela ajoute des lignes et des variables supplémentaires. Vous pouvez le faire avec le any()
Fonction dans Python.
has_negative = any(num < 0 for num in numbers)
Et si vous voulez vous assurer que tous les chiffres sont positifs:
all_positive = all(num > 0 for num in numbers)
Ces fonctions fonctionnent en évaluant une condition sur tous les éléments et en s'arrêtant dès que le résultat est connu.
Combiner les chaînes avec join()
Si vous avez déjà eu besoin de construire une phrase ou de combiner des caractères ou des mots à partir d'une liste, votre premier instinct pourrait être de les traverser et d'ajouter chacun manuellement, comme ceci:
sentence = ''
for word in words:
sentence += word + ' '
Cela fonctionne, mais c'est inefficace, surtout avec de grandes listes. En utilisant la fonction join () de Python, vous pouvez simplement le faire:
sentence = ' '.join(words)
C'est plus propre, plus rapide et plus expressif. Vous spécifiez simplement le séparateur ('' dans ce cas) et appelez .join()
là-dessus, transmettre la liste des chaînes. Assurez-vous que la liste ne contient que des chaînes car join () ne fonctionnera pas avec des nombres ou d'autres types de données à moins que vous ne les convertiez d'abord.
Compter les articles avec collections.Counter
Compter à quelle fréquence chaque élément apparaît dans une liste ou une chaîne est une tâche qui apparaît tout le temps. C'est ainsi que vous abordez généralement le problème dans la plupart des langues: vérifiez si la clé existe, puis incrémentez-la:
counts = blog
for item in items:
if item in counts:
counts[item] += 1
else:
counts[item] = 1
À l'aide du module de collections, vous pouvez faire de même avec beaucoup moins de code.
from collections import Counter
counts = Counter(items)
Juste une ligne, et ça fait tout pour vous. Il renvoie un objet de type dictionnaire où les clés sont les éléments et les valeurs sont leur nombre. Le comptoir fonctionne sur n'importe quel listes itérable, pas seulement. Vous pouvez l'utiliser sur des chaînes, des tuples ou même la sortie d'un générateur.
Échange de variables en place avec déballage de tuple
Dans de nombreux langages de programmation, l'échange de valeurs entre deux variables nécessite une variable temporaire.
temp = a
a = b
b = temp
C'est bien, mais c'est un travail supplémentaire et se sent dépassé à Python. Voici la méthode pythonique:
a, b = b, a
Pas de variable temporaire. Pas de fouillis. Cela utilise un concept appelé déballage Tuple, et l'échange de variables n'est que le début. Vous pouvez également l'utiliser pour déballer plusieurs valeurs à la fois.
name, age, country = ['Alice', 30, 'Canada']
Pas besoin d'accéder à chaque élément par index. Cela fonctionne avec des tuples, des listes ou tout itérable de la bonne longueur.
Recherchez la lisibilité
Bien que l'écriture de code pythonique soit souvent un signe de programmation propre et élégante, elle peut parfois aller trop loin. Certains modèles pythoniques, en particulier lorsqu'ils sont utilisés excessivement ou dans le mauvais contexte, peuvent rendre votre code plus difficile à lire, pas plus facile. L'une des valeurs fondamentales de Python est sa lisibilité. En fait, l'un des principes du zen de Python dit: «La lisibilité compte». Alors oui, l'utilisation de Python idiomatique est bonne, mais pas au prix de transformer votre code en puzzle.
Les compréhensions de la liste en sont un bon exemple. Ils sont concis, rapides et expressifs. Cependant, lorsque vous commencez à les nicher ou à ajouter trop de conditions, ils peuvent devenir difficiles à suivre. Regardons un exemple.
filtered = []
for user in users:
if user.is_active and user.age > 18:
filtered.append(user.name)
Ceci est la version utilisant la compréhension de la liste:
filtered = [user.name for user in users if user.is_active and user.age > 18]
Bien que la compréhension de la liste soit toujours correcte ici, elle devient rapidement illisible si plus de logique est ajoutée (comme des boucles imbriquées ou des conditions multiples.) Si votre compréhension est plus longue qu'une ligne ou fait un deuxième coup d'œil à comprendre, il pourrait être préférable de rester avec une boucle.
Il y a tellement de raisons d'apprendre Python, et sa manière élégante d'écriture du code n'est que l'une d'entre elles. Une fois que vous avez compris, vous pouvez explorer d'autres astuces, comme l'utiliser comme calculatrice ou pour comprendre la durée de vie de la batterie de votre mobile.
Vous pouvez lire l’article original (en Angais) sur le blogwww.howtogeek.com