2013-12-14 12 views
8

vedere l'esempio seguente:Perché Python tratta una tupla con un elemento come intero?

(1) #outputs 1 

Ma se aggiungo la virgola, sarà giusto Secondo la documentazione Python :)

(1,) #output (1,) 

che è super strano per me. Qualcuno può spiegarlo?

Una domanda correlata: non esiste un modo per Python per sapere quando (1) dovrebbe essere una tupla (1) anziché 1?

Grazie per le risposte future.

+1

Forse perché Python pensa che '(1)' sia un'equazione, come '(1 + 0)'? –

+0

Cosa dovrebbe '(2 + 0)' essere trattato come in '1/(2 + 0)'?, Una tupla? – thefourtheye

+0

pensa, ho capito :) – user2228392

risposta

18

In realtà, è la virgola che crea una tupla; le parentesi sono necessarie solo nei casi in cui vi sarebbe altrimenti un'ambiguità. Dopo tutto, le parentesi possono essere utilizzate anche per il raggruppamento:

>>> 1, 2 
(1, 2) 
>>> 1, 
(1,) 
>>> (1) 
1 
>>> 2 * 3, 4 
(6, 4) 
>>> 2 * (3, 4) 
(3, 4, 3, 4) 
>>> 1, + (2, 3) * 4 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: bad operand type for unary +: 'tuple' 
>>> (1,) + (2, 3) * 4 
(1, 2, 3, 2, 3, 2, 3, 2, 3) 
+0

è utile. Ho capito :) grazie – user2228392

Problemi correlati