Сбой всего остального, если у Вас есть Office 2007, можно всегда сохранять ppt как документ OOXML.
Кратчайший из них должен быть:
bc = 'on' if c.page=='blog' else 'off'
Как правило, это может показаться немного запутанным, поэтому вам следует используйте его только тогда, когда ясно, что это значит. Не используйте его для больших логических предложений, так как он быстро начинает выглядеть некрасиво.
Это:
X if Z else Y
) , сомнительно читаемый. Помня об этих предостережениях, вот оно:
bc = ("off", "on") [c.page == "blog"]
РЕДАКТИРОВАТЬ: Согласно запросу, обобщенная форма выглядит так:
result = (on_false, on_true)[condition]
Объяснение: условие
может быть любым, что оценивается как логическое. Затем он обрабатывается как целое число, поскольку он используется для индексации кортежа: False == 0
, True == 1
, который затем выбирает правильный элемент из кортежа.
Или вы можете использовать встроенный оператор if:
>>> cpage = 'blog'
>>> bc = 'on' if cpage == 'blog' else 'off'
>>> bc
'on'
>>> cpage = 'asdf'
>>> bc = 'on' if cpage == 'blog' else 'off'
>>> bc
'off'
В этом блоге есть небольшая запись об этой функции, а соответствующий PEP - PEP308 . Встроенный оператор if был введен в Python 2.5.
Этот оператор может быть немного менее питоническим, но вы можете использовать и / или следующим образом:
>>> cpage = 'asdf'
>>> bc = (cpage == 'blog') and 'on' or 'off'
>>> bc
'off'
>>> cpage = 'blog'
>>> bc = (cpage == 'blog') and 'on' or 'off'
>>> bc
'on'
Этот оператор чаще используется в лямбда-операторах, чем в строке сам по себе, но форма
A and B or C
похожа на
if A:
return B
else:
return C
. Я собирался написать немного более подробное объяснение, но они охватили его лучше в Dive into Python . Они также отметили несколько предостережений, о которых вам, вероятно, следует знать.
Другая возможность - использовать dict, если вы можете вычислить значения вне функции, которая обращается к ним (т.е. значения статические, что также касается проблема оценки в комментариях к ответу scrible).
want_bc = {True: "on", False: "off"}
# ...
bc = want_bc[c.page == "blog"]
Я предпочитаю это и / или решения для индексации кортежей под общей рубрикой предпочтения вычислений тестированию.
Ну, не будучи парнем из питонов, отнеситесь к этому с большой долей скептицизма, но написав (и, с большим трудом, прочитал ) много умного кода с годами я стал сильно предпочитать читаемый код. Я понял суть того, что делал ваш исходный код, хотя я никто как парень Python. Конечно, вы могли бы это скрыть и, возможно, произвести впечатление на пару-тройку чудаков по Python, но почему?
Вы можете использовать,
a = b if c else d
, но если вы используете версию Python до 2.5,
bc = c.page == "blog" and "on" or "off"
тоже может помочь.