Que signifie pythonique? [fermé]

88

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?

Jon
la source
11
The Zen of Python , What is Pythonic , etc ...
Martin Tournoij
C'est une question hors sujet. Vous auriez pu fournir un petit exemple de code pour en faire plus sur le sujet.
ρss

Réponses:

103

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 thissur la ligne de commande donne un résumé des principes de Python. Moins connu est que le code source pour import thisest décidément, et par conception, impythonique! Jetez-y un coup d'œil pour voir ce qu'il ne faut pas faire.

James
la source
26
Btw, le code source pour "importer ceci" est ici: github.com/python/cpython/blob/master/Lib/this.py
Gautam le
Quel serait un exemple dans un domaine différent? Comme cuisiner, concevoir, conduire ..?
Daniel Springer
2
Pour un exemple de code plus complexe, une implémentation "non pythonique" du chiffrement Vigenere est progressivement rendue plus "pythonique" dans cette réponse (divulgation: mon code et opinions): stackoverflow.com/questions/2490334/…
Nick
18
Je pense que je devrais laisser un commentaire ici étant donné mon nom d'utilisateur
Pythonic
A noter également que le terme général est "idiomatique"
Louis Maddox il y a