这似乎是一个非常简单的问题;但我看不出它是如何实际可能的。我通常认为我的代码符合PEP8标准。 83个字符是很好的东西。我有一个很长的列表(字典)理解与一个or
相结合,我正试图采用一个新行,但我无法弄清楚如何将or
带到新的-line。
更简化的版本是:
>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test
... if test[k]]) or 'hello'
无论何时(无论何时)我试图将or 'hello'
置于新线上,它都会失败;命令行解释器和emacs的解析器也不理解,因此可能无法实现。
是否可以将or 'hello'
放在新行上,如果可以,它会去哪里?
答案 0 :(得分:4)
括在括号中。这将有效。
>>> test = {'a' : None, 'b' : None}
>>> b = (','.join([k for k in test if test[k]])
... or 'hello')
答案 1 :(得分:2)
如果一行太长,请将其拆分为多个语句以增强可读性:
b = ','.join(k for k in test if test[k])
if not b:
b = 'hello'
(我还将列表理解更改为更合适的生成器表达式。)
答案 2 :(得分:2)
使用反斜杠明确标记续行:
>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test if test[k]]) \
... or 'hello'