9
votes

Python Lisibilité Conseils pour un programmeur Java

Je suis un programmeur Java, mais je saisi maintenant le "royaume de Python" pour quelques affaires pour lesquelles Python fonctionne mieux. Je suis tout à fait sûr qu'une bonne partie de mon code semblerait étrange pour un programmeur Python (par exemple, à l'aide de parenthèses sur chaque IF).

Je sais que chaque langue a ses propres conventions et son ensemble de "habitudes". Donc, d'un point de vue de la lisibilité, quelles sont les conventions et pratiques qui sont "la voie à suivre" en Java, mais ne sont pas vraiment la "voie pythonique" de faire des choses?


2 commentaires

J'avais exactement la même question à l'esprit :)


Gardez un esprit ouvert ... Python par la nature est censé être lisible ... il sera clair en comprenant certains concepts comme la tranchée, les lambdas, les décorateurs, etc.


6 Réponses :


8
votes

Il n'y a pas de réponse simple à cette question. Il faut du temps pour que votre code soit "Pythonic" . N'essayez pas de recréer les idiomes Java à Python. Il va juste prendre le temps d'apprendre des idiomes python.

Jetez un coup d'œil à Code comme un Pythonista: Python idiomatique < / a>, guide de style pour le code Python et Python pour les programmeurs Java (archivés) .


1 commentaires

J'ai deuxième code comme un pythonista.



3
votes

Le meilleur endroit pour démarrer est probablement PEP-8 , qui est le guide de style python officiel. Il couvre beaucoup de bases pour ce qui est considéré comme standard.


2 commentaires

Est-ce juste moi ou PEP-8 a-t-il été référencé un peu plus fréquemment ces derniers jours que ce qu'il y avait été?


Cela a été fréquemment référencé depuis un certain temps aussi loin que j'ai vu.




0
votes

"Tout est une classe" est un idiome Java qui n'est spécifiquement pas un idiome Python. (Presque) Tout peut être une classe en python, et si c'est plus à l'aise pour vous, mais Python n'exige pas une telle chose. Python n'est pas une langue purement orientée objet et dans mon expérience (limitée), il est bon de prendre cela au cœur.


0 commentaires

5
votes

Jacob Hallã © N a déjà observé que le meilleur style Python suit rejet de Tufte de Décoration (bien que le champ de Tufte ne soit pas des langages de programmation, mais une affichage visuelle d'informations): Ne perdez pas "l'encre" (pixels) ou "papier" (espace) pour une simple décoration.

beaucoup suit de ce principe: pas de licencier parenthèses, pas de points-virgules, pas de "boîtes ASCII" stupides dans les commentaires et les docstrings, aucun espace gaspillé pour "aligner" des choses "Aligner" sur différentes lignes, des guillemets simples, à moins que vous n'ayez spécifiquement besoin de guillemets doubles, pas \ pour continuer les lignes sauf lorsque cela est obligatoire, aucun commentaire qui ne fait que simplement Rappelez au lecteur des règles de la langue (si le lecteur ne connaît pas la langue que vous rencontrez des problèmes de toute façon ;-), et ainsi de suite. P>

Je dois souligner que certaines de ces conséquences du "Tufte L'esprit de Python "sont plus controversés que d'autres, au sein de la communauté python. Mais la langue est sûre respecte "l'esprit de Tufte" assez bien ... p>

se déplaçant à "plus controversé" (mais sanctionné par le zen de Python - Importez ce code> à une invite d'interprète ): "Appartement vaut mieux que jeté", alors "sortez dès que c'est raisonnable" plutôt que de nidifier. Permettez-moi d'expliquer: p>

if something:
  blih()
  bluh()
  blah()
else:
  this()
  that()
  theother()


1 commentaires

Déterminer si retourner une valeur à mi-parcours via une fonction ou utilisez une instruction ele me laisse souvent paralysé avec indécision ...



0
votes

La syntaxe n'est que la pointe d'un iceberg. Il existe un certain nombre de langues différentes constructions que les programmeurs Java devraient être au courant, par exemple. Python n'a pas besoin d'utiliser l'interface

Création d'une interface et Des implémentations rapides dans Python - Overflow de pile P>

L'autre idiome vraiment utile est que tout peut être converti en une valeur booléenne avec une signification intuitive dans Python. Par exemple, pour vérifier un tableau vide, vous faites simplement p>

if ((my_array == null) || (my_array.length == 0)) {
  return
}


0 commentaires