Понимание списка или пробел с новой строкой - PullRequest
0 голосов
/ 09 февраля 2012

Это кажется очень простым вопросом;но я не вижу, как это на самом деле возможно.Я обычно довольно хорошо мой код, будучи PEP8-совместимым.83 символа - это хорошая вещь.У меня есть длинное понимание списка (словаря) в сочетании с or, который я пытаюсь перенести на новую строку, но я не могу понять, как получить or на новую строку.

Очень упрощенная версия:

>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test
...               if test[k]]) or 'hello'

Всякий раз, когда (где бы) я ни пытался поставить or 'hello' на новую строку, он терпит неудачу;интерпретатор командной строки и синтаксический анализатор emacs тоже не понимают, поэтому это может быть невозможно.

Можно ли поместить or 'hello' в новую строку, и если да, то куда он пойдет?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2012

Заключите в скобки.Это будет работать.

>>> test = {'a' : None, 'b' : None}
>>> b = (','.join([k for k in test if test[k]])
...      or 'hello')
2 голосов
/ 09 февраля 2012

Вы явно помечаете продолжение строки обратной косой чертой:

>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test if test[k]]) \
...          or 'hello'
2 голосов
/ 09 февраля 2012

Если строка становится слишком длинной, разбейте ее на несколько операторов для улучшения читабельности:

b = ','.join(k for k in test if test[k])
if not b:
    b = 'hello'

(Я также изменил понимание списка на более подходящее выражение генератора.)

...