157 votes

Python tuple virgule règle de syntaxe

Dans le cas d'un seul élément dans un tuple, la virgule est nécessaire.

a = ('foo',)

Ce sur plusieurs éléments? Il semble que virgule existe ou pas, ils sont tous les deux valides de la syntaxe. Est-ce correct? Ayant virgule est plus facile pour l'édition, à mon avis. C'est qu'un mauvais style de codage?

a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)

130voto

Jeff Mercado Points 42075

Il est seulement nécessaire pour l'unique élément de n-uplets de lever l'ambiguïté de la définition d'un tuple ou une expression entouré par des parenthèses.

Pour plus d'un élément, il n'est plus nécessaire car il est parfaitement clair qu'il est un n-uplet. Cependant, la virgule n'est autorisé à les définir à l'aide de plusieurs lignes de plus facile. Vous pouvez ajouter à la fin ou réorganiser les éléments sans casser la syntaxe parce que vous avez omis une virgule de l'accident.

par exemple,

someBigTuple = (
                   0,
                   1,
                   2,
                   3,
                   4,
                   5,
                   6,
                   7,
                   8,
                   9,
                   10,
                   #...
                   10000000000,
               )

Notez que cela s'applique à d'autres collections (par exemple, les listes et les dictionnaires) trop et pas seulement des n-uplets.

78voto

Duncan Points 25356

Dans tous les cas, sauf le vide tuple de la virgule est le plus important. Les parenthèses sont nécessaires uniquement lorsque nécessaire pour d'autres raisons syntaxiques: pour distinguer un tuple à partir d'un ensemble d'arguments de la fonction, la priorité de l'opérateur, ou pour permettre des sauts de ligne.

La virgule pour les tuples, listes, ou des arguments de la fonction est de bon ton, surtout lorsque vous avez une longue initialisation qui est répartie sur plusieurs lignes. Si vous avez toujours inclure une virgule, alors vous ne pas ajouter une autre ligne à la fin, s'attendant à ajouter un autre élément et, au lieu de simplement créer une expression valide:

a = [
   "a",
   "b"
   "c"
]

En supposant que commencé comme un 2 de l'élément de la liste qui a été étendu par la suite il a mal tourné dans un peut-être pas immédiatement évident. Toujours inclure la virgule et vous éviter ce piège.

56voto

asmeurer Points 13185

Un autre avantage de virgules, c'est qu'il fait des diff look plus agréable. Si vous avez commencé avec

a = [
    1,
    2,
    3
]

et cela a changé

a = [
    1,
    2,
    3,
    4
]

La diff ressemblerait

 a = [
     1,
     2,
-    3
+    3,
+    4
 ]

Alors que si vous aviez commencé par une virgule, comme

a = [
    1,
    2,
    3,
]

Alors la diff serait juste

 a = [
     1,
     2,
     3,
+    4,
 ]

16voto

Dave Everitt Points 3862

Il est en option: voir le wiki Python.

Résumé: un seul élément de n-uplets besoin d'une virgule, mais c'est facultatif pour les multi-élément n-uplets.

6voto

Adam Zalcman Points 13198

Virgule est nécessaire pour un élément de n-uplets seulement. Avoir une virgule pour les plus grands tuples est une affaire de style et n'est pas nécessaire. Son plus grand avantage est propre diff sur des fichiers avec multi-ligne à grande tuples qui sont souvent modifiées (par exemple, la configuration des n-uplets).

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