2009-09-16 9 views
5

Selon vous, quelle est la convention la plus utilisée lors de l'écriture de littéraux de dictionnaire dans le code?Convention de support Python

Je vais écrire une convention possible comme réponse.

+3

les sondages doivent être wiki de la communauté – SilentGhost

Répondre

16
my_dictionary = { 
    1: 'something', 
    2: 'some other thing', 
} 
+6

+1 pour la virgule. – RichieHindle

+0

Au début, je n'ai pas apprécié l'utilité de la virgule dans les listes, les dictionnaires, etc. Mais cela * simplifie vraiment * l'édition ultérieure de la liste, que vous réorganisiez, copiiez/colliez ou que vous ajoutiez de nouveaux éléments. – PaulMcG

+3

L'ajout d'une ligne est un diff d'une ligne avec la virgule en place. – u0b34a0f6ae

13

Je dirais qu'il n'y a presque pas de norme.

Je l'ai vu deux façons de: indenter

Indent 1: 
my_dictionary = { 
    'uno': 'something', 
    'number two': 'some other thing', 
} 

Indent 2: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing', 
       } 

Je l'ai vu trois placé pour avoir le support final:

End 1: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing', 
} 

End 2: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing', 
       } 

End 3: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing',} 

Et parfois, vous justifiez les valeurs:

my_dictionary = {'uno':  'something', 
       'number two': 'some other thing', 
       } 

Et parfois même les deux-points:

my_dictionary = {'uno'  : 'something', 
       'number two' : 'some other thing', 
       } 

Ce qui semble bizarre.

Et vous avez parfois une virgule de fin, et parfois pas:

my_dictionary = {'uno': 'something', 
       'number two': 'some other thing'} 

Et parfois, vous le coller sur une seule ligne (si elle correspond).

my_dictionary = {'uno': 'something', 2: 'some other thing'} 

Tout le monde semble avoir sa propre combinaison de ces styles. Personnellement, je tends vers le style que vous utilisez dans votre exemple, sauf s'il y a une raison de ne pas le faire. Les raisons communes ne sont pas lorsque vous avez un dictionnaire dans le cadre d'une déclaration. Comme si:

amethodthattakesadict({'hey': 'this', 
         'looks': 'a', 
         'bit': 'shitty', 
         }) 

Je vous recommande de vous adapter au style du gars qui a écrit le code que vous éditez. Si c'est votre code: Faites comme vous voulez. :-)

+2

+1 pour bien décrire toutes les possibilités. – hcs42

+5

Je pense que la seule partie de ces exemples gouvernés par PEP8 est l'espacement autour des deux-points. Zéro avant, un après. – Triptych

8

A propos de l'accolade de fin: je préfère comme ça:

my_dictionary = { 
    'a': 'first value', 
    'b': 'second', 
    } 

et je vais vous dire pourquoi: parce que l'indentation du code Python n'a pas de jeton proche, le code est dentelé que: le premier line (if, while, def, etc) est en retrait du reste de la clause, toutes les autres lignes étant indentées du même montant. La dernière ligne de la clause est indentée avec tout le reste. La ligne suivante est indentée de la même façon que la première ligne est la première ligne de la clause suivante, pas la dernière ligne de celle-ci. Donc, j'aime mettre en retrait des structures de données en utilisant une convention similaire à celle des clauses de code, même si les structures de données ont un jeton de fermeture explicite, et pourraient donc avoir plus de flexibilité.

-3

-je faire cela, si le dictionnaire est trop volumineux pour tenir sur une seule ligne:

d = \ 
    { 
    'a' : 'b', 
    'c' : 'd' 
    } 
3

style Indentation 1, se terminant le style 3 (après la réponse de Lennart):

my_dictionary = {1: 'thing_one', 
        2: 'thing_two', 
        ... 
        n: 'thing_n'} 

Il s'agit probablement du style d'indentation le plus homogène pour les entités entre crochets dans le code Python, car il ressemble étroitement à la mise en forme des espaces blancs de Python. Laisser tomber l'indentation en style C dans le code Python m'a toujours semblé un peu gênant, et je pense qu'il est surtout utilisé parce que les programmeurs habitués aux langages C (à cause de leur ubiquité) n'ont peut-être pas été exposés à différents styles d'indentation. Un inconvénient peut être que l'insertion au début ou à la fin est un peu plus difficile que dans les autres styles. Considérant un éditeur approprié qui supporte l'écriture de code Python, cela ne devrait pas faire une grande différence. Essayez ce style d'indentation en contexte, et comparez-le à l'indentation de style C côte à côte, puis décidez lequel est plus pythonique et cohérent.

Peut-être que cela pourrait être appelé indentation de style Lisp, parce qu'il est la façon dont le code a été lisp depuis indenté siècles décennies, mais il est, par exemple, utilisé aussi souvent dans le code Smalltalk. Une chose que vous allez souvent lire dans les discussions sur le placement des parenthèses (dans les langages Lisp) est: "Pourquoi leur donner des lignes supplémentaires? Sont-ils si importants?". Cependant, à la fin de la journée, c'est surtout une question de goût.