170 votes

Pourquoi Python pep-8 recommande fortement des espaces sur les onglets pour la mise en retrait ?

Je vois sur Stack Overflow et PEP 8 que la recommandation est d’utiliser des espaces uniquement pour la mise en retrait dans des programmes Python. Je peux comprendre la nécessité d’une indentation conforme et j’ai senti que la douleur.

Y a-t-il une raison sous-jacente pour les espaces à privilégier ? J’aurais pensé que les onglets ont été beaucoup plus faciles de travailler avec.

135voto

nigratruo Points 149

Eh bien eh bien, on dirait que tout le monde est fortement biaisé en faveur des espaces. J'ai utiliser les onglets exclusivement. Je sais très bien pourquoi. Les onglets sont en fait un endroit frais invention, qui est venu APRÈS des espaces. Il vous permet de tiret sans pousser de l'espace des millions de fois, ou à l'aide d'un faux onglet (qui produit des espaces). Vraiment, je ne comprends pas pourquoi tout le monde fait preuve de discrimination à l'utilisation des onglets. Il est très bien comme les personnes âgées de discriminer les jeunes pour le choix d'une nouvelle technologie plus efficace et de se plaindre que la composition à impulsions fonctionne sur TOUS les appareils, et pas seulement sur ces fantaisie de nouveaux. "La tonalité de numérotation ne fonctionne pas sur tous les téléphones, c'est pourquoi c'est mal" Votre éditeur ne peut pas gérer les onglets correctement? Eh bien, obtenir un MODERNE de l'éditeur. Peut-être sacrément temps, nous sommes maintenant dans le 21e siècle et le moment où un éditeur est un de haute technologie compliquée morceau de logiciel est bien passé. Nous avons maintenant des tonnes et des tonnes de rédacteurs pour choisir de, tous d'entre eux qui prennent en charge les onglets de l'amende juste. Aussi, vous pouvez définir la façon dont beaucoup d'un onglet doit être, une chose que vous ne pouvez pas faire avec des espaces. Ne voyez pas les onglets??? Qu'est-ce que le fait qu'un argument? Eh bien, vous ne voyez pas d'espaces ni! - Je l'audace de suggérer à obtenir un meilleur éditeur? L'un de ces high-tech, qui ont été libérés il ya 10 ans déjà, que l'AFFICHAGE des CARACTÈRES INVISIBLES??? (sarcasme off) L'utilisation d'espaces provoque beaucoup plus de la suppression et le formatage de travail. C'est pourquoi (et toutes les autres personnes qui le savent et sont d'accord avec moi) utilisez les onglets pour python.

Le mélange des tabulations et des espaces est un nono et aucun argument à ce sujet. C'est un gâchis et ne peut fonctionner.

120voto

hop Points 15423

La réponse est donnée dans le PEP. Je cite:

Le plus populaire de la manière de l'indentation de Python est avec des espaces.

Quelle autre raison sous-jacente avez-vous besoin?

Pour mettre moins brutalement: Considérer également le champ d'application de la PEP comme indiqué dans le premier paragraphe:

Ce document donne des conventions de codage pour le code Python comprenant la bibliothèque standard dans les principaux Python de distribution.

L'intention est de rendre tout le code qui va dans l'officiel de la distribution python régulièrement mises en forme (j'espère que nous pouvons être d'accord que cela soit toujours une Bonne Chose™).

Depuis la décision entre les espaces et les tabulations pour un programmeur est) vraiment une question de goût et b) facilement traitée par des moyens techniques (éditeurs, des scripts de conversion, etc.), il est clair qu'un moyen de mettre fin à toute discussion: choisi une.

Guido a été le seul à choisir. Il n'avait même pas besoin de donner une raison, mais il n'a toujours en se référant à des données empiriques. (Bien que, je suppose, si l'BDFL ont été un promoteur de l'utilisation des onglets, il aurait ignoré le fait que l'argument ;-)

Pour toutes autres fins, vous pouvez profiter de cette PPE comme une recommandation, ou vous pouvez l'ignorer -- votre choix, ou des membres de votre équipe ou de votre chef d'équipe.

Mais si je peux vous donner un conseil: ne pas mélanger em ;-)

44voto

Soviut Points 26384

J’ai personnellement en désaccord avec des espaces sur les onglets. Pour moi, les onglets sont un caractère/mécanisme de mise en page document tandis que les places sont pour le contenu ou la délimitation entre les commandes dans le cas de code.

Je suis d’accord avec Jim commentaires qu’onglets ne sont pas vraiment la question, ce sont les gens et comment ils veulent mélanger des onglets et des espaces.

Cela dit, j’ai forcé moi-même d’utiliser des espaces pour des raisons de convention. J’apprécie la cohérence au cours de vos préférences personnelles.

31voto

Thomas Wouters Points 38811

Le problème avec les onglets, c'est qu'ils sont invisibles, et les gens ne peuvent jamais s'entendre sur la largeur des onglets. Lorsque vous mélangez des tabulations et des espaces, et vous définissez tabstops à quelque chose d'autre que Python (qui utilise des tabulations toutes les 8 espaces), vous allez voir le code dans une mise en page différente que Python voit. Et parce que la mise en page détermine les blocs, vous allez voir une logique différente. Elle conduit à des bogues.

Si vous insistez sur défiant la PEP 8 et à l'aide d'onglets -- ou pire, le mélange des tabulations et des espaces -- au moins toujours exécuter python avec le '-tt' argument, ce qui le rend incompatible l'indentation (parfois un onglet, parfois un espace pour le même niveau d'indentation) une erreur. Également, si possible, dans votre éditeur de texte pour afficher les onglets différemment. Mais vraiment, la meilleure approche est de ne pas utiliser des onglets période.

31voto

S.Lott Points 207588

La raison pour les espaces, c’est que les onglets sont facultatives. Les espaces sont le dénominateur le plus bas-common réels dans la ponctuation.

Chaque éditeur de texte décent a un « remplacer tabulations par des espaces » et beaucoup de gens utilisent cela. Mais pas toujours.

Alors que certains éditeurs de texte pourraient remplacer une série d’espaces avec un onglet, c’est vraiment rare.

Ligne de fond. Vous ne pouvez pas vous tromper avec espaces. Vous pourriez vous tromper avec onglets. Afin de ne pas utiliser les onglets et réduire les risques d’erreurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X