Sur de nombreux sites Web, je vois souvent des commentaires indiquant que le code n'est pas pythonique ou qu'il existe un moyen plus pythonique d'atteindre le même objectif.
Que signifie pythonique dans ce contexte? Par exemple, pourquoi
while i < someValue:
do_something(list[i])
i += 1
pas pythonique alors
for x in list:
doSomething(x)
est pythonique?
Réponses:
Exploiter les fonctionnalités du langage Python pour produire un code clair, concis et maintenable.
Pythonic signifie un code qui n'obtient pas seulement la syntaxe correcte, mais qui suit les conventions de la communauté Python et utilise le langage de la manière dont il est destiné à être utilisé.
C'est peut-être plus facile à expliquer par un exemple négatif, comme dans l'article lié des autres réponses. Les exemples de code unpythonic proviennent souvent d'utilisateurs d'autres langages, qui au lieu d'apprendre des modèles de programmation Python tels que des compréhensions de listes ou des expressions de générateur, tentent de faire du crowbar dans des modèles plus couramment utilisés en C ou en java. Les boucles en sont des exemples particulièrement courants.
Par exemple, en Java, je pourrais utiliser
for i in (i; i < items.length ; i++) { n = items[i]; ... now do something }
En Python, nous pouvons essayer de reproduire cela en utilisant des boucles while, mais ce serait plus propre à utiliser
for i in items: i.perform_action()
Ou, même une expression de générateur
(i.some_attribute for i in items)
Donc, essentiellement, quand quelqu'un dit que quelque chose n'est pas pythonique, il dit que le code pourrait être réécrit d'une manière qui convienne mieux au style de codage des pythons.
Taper
import this
sur la ligne de commande donne un résumé des principes de Python. Moins connu est que le code source pourimport this
est décidément, et par conception, impythonique! Jetez-y un coup d'œil pour voir ce qu'il ne faut pas faire.la source