2015-10-05 11 views
7

Bardzo prosta linia:Dlaczego to proste wyrażenie warunkowe nie działa?

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

nie powiedzie się z:

SyntaxError: can't assign to conditional expression 

natomiast rozbudowany jak:

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

działa dobrze.

+0

Przykro mi, chłopaki, od czasu do czasu zapominam o dodatkowym "=" i skończę pytać, dlaczego linia nie działa. – Gabriel

Odpowiedz

11

Używasz go źle. Używaj go w ten sposób:

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

Ugh, co id * ot, zawsze zapominam o dodatkowych '='. Dziękuję Ci! Wybieram tę odpowiedź, ponieważ została ona dodana jako pierwsza. – Gabriel

4

powinny być

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

Można go odczytać jako:

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

to znaczy, że wyrażenie po prawej stronie znaku przypisania jest w pełni ocenione, a wynik jest następnie przypisany do lewej strony. Samo wyrażenie jest dwiema wartościami oddzielonymi przez warunek.

Powiązane problemy