Как работает обход условного оператора Python? - PullRequest
21 голосов
/ 22 декабря 2009

Из того, что я прочитал, я обнаружил, что встроенного троичного оператора не существует (я буду рад узнать об этом больше.).

Я нашел следующий код в качестве замены:

def val():
    var = float(raw_input("Age:"))
    status = ("Working","Retired")[var>65]
    print "You should be:",status

Я не мог понять, как работает этот код; Может кто-нибудь объяснить мне, как на самом деле работает код? Мне также интересно узнать, почему троичного оператора не существует; любые ссылки или ссылки по этому поводу будут полезны.

Я использую Python 2.6.4 в Windows Vista.

Ответы [ 12 ]

0 голосов
/ 22 декабря 2009

в коде, который вы разместили, следующая строка эмулирует троичную:

status = ("Working","Retired")[var>65]

здесь кортеж ("Working","Retired") доступ с индексом [var>65], который оценивается как True (1) или False (0) Когда к нему обращаются с индексом 0, status будет 'Working'; если индекс 1, то он будет `` в отставке``. Это довольно неясный способ сделать условное присваивание, использовать нормальный троичный синтаксис, который был введен в py2.5, как было сказано.

0 голосов
/ 22 декабря 2009

В Python 2.6 и выше:

print "You should be {0}.".format("retired" if var>65 else "working")

В Python 3.1 и выше:

print ("You should be {}.".format("retired" if var>65 else "working"))
...