27 votes

Quand faut-il des parenthèses autour d'un tuple?

Y a-t-il une référence quelque part définissant précisément quand entourer des tuples entre parenthèses est ou n'est pas requis?

Voici un exemple qui m'a surpris récemment:

 >>> d = {}
>>> d[0,] = 'potato'
>>> if 0, in d:
  File "<stdin>", line 1
    if 0, in d:
        ^
SyntaxError: invalid syntax
 

29voto

ecatmur Points 64173

La combinaison des expressions pour créer un tuple à l'aide de la virgule jeton est appelé" expression_list. Les règles de priorité des opérateurs ne couvrent pas les listes d'expressions; c'est parce que l'expression listes ne sont pas eux-mêmes expressions; elles deviennent des expressions lors de la mise entre parenthèses.

Donc, un unenclosed expression_list est autorisé partout en Python qu'il est expressément autorisé par la langue, de la grammaire, mais pas lorsqu'un expression tant que tel.

Par exemple, la grammaire de l' instruction if est comme suit:

if_stmt ::=  "if" expression ":" suite
             ( "elif" expression ":" suite )*
             ["else" ":" suite]

Parce que la production expression est référencé, unenclosed expression_lists ne sont pas autorisés en tant que sujet de l' if déclaration. Toutefois, la déclaration d' acceptation d'une expression_list:

for_stmt ::=  "for" target_list "in" expression_list ":" suite
              ["else" ":" suite]

Donc la suite est autorisé:

for x in 1, 2, 3:
    print(x)

9voto

Martijn Pieters Points 271458

N'importe où vous êtes autorisé à utiliser l' expression_list terme, vous n'avez pas besoin d'utiliser des parenthèses.

L' if déclaration implique un expression, et ne prend pas en charge un expression_list.

Des exemples de syntaxe qui permet aux expression_list:

Grepping les Expressions, Simple et Composé des déclarations de la documentation pour expression_list vais vous dire tous les endroits qu' expression_list est utilisé dans le Python de la grammaire.

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