2015-10-05 24 views
7

Molto semplice linea:Perché questa semplice espressione condizionale non funziona?

i = 3 
a = 2 if i in [1, 3, 6] else a = 7 

fallisce con:

SyntaxError: can't assign to conditional expression 

che espansa come:

if i in [1, 3, 6]: 
    a = 2 
else: 
    a = 7 

funziona bene.

+0

Scusate ragazzi, ogni tanto mi dimentico dell'extra '=' e finisco per sconcertarmi sul perché la linea non funzioni. – Gabriel

risposta

11

Si sta usando male. Utilizzare in questo modo:

a = 2 if i in [1, 3, 6] else 7 
+1

Ugh cosa sia, mi dimentico sempre di più '='. Grazie! Sto selezionando questa risposta da quando è stata aggiunta per prima. – Gabriel

4

Dovrebbe essere

a = 2 if i in [1, 3, 6] else 7 

Si può leggere come:

a = (((2 if i in [1, 3, 6] else 7))) 

che è quello di dire che l'espressione sul lato destro del segno di assegnazione è completamente valutato e il risultato poi assegnato a sinistra. L'espressione stessa è composta da due valori separati dalla condizione.

Problemi correlati