Python inline elif可能吗?

14 python if-statement python-3.x

'Hello ' + ('there' if name is None else name)
Run Code Online (Sandbox Code Playgroud)

相当于

msg = 'Hello '
if name is None:
    msg += 'there'
else:
    msg += name
Run Code Online (Sandbox Code Playgroud)

相当于这个:

msg = 'Hello '
if name is None:
    msg += 'there'
elif name == 'Mr Anderson'
    msg += 'Neo'
else:
    msg += name
Run Code Online (Sandbox Code Playgroud)

编辑:这里的参考是我想缩小的代码

srepr = '\'Modify '
if self.register == 'p':
    srepr += 'Pointer'
elif self.register == 'v':
    srepr += 'Value'
else
    srepr += 'Unknown'
srepr += ' By ' + str(self.delta) + '\''
Run Code Online (Sandbox Code Playgroud)

tok*_*and 23

msg = "Hi " + ("there" if not name else ("Neo" if name == "Anderson" else name))
Run Code Online (Sandbox Code Playgroud)

警告:我认为这是不可读的,永远不会使用它.

  • @glenn.我添加了这些括号以使其更具可读性,但我猜这是主观的.在任何情况下,我认为我们都同意没有人应该写任何类似的东西. (4认同)

maa*_*kle 6

msg = 'Hello ' + (
    'there' if name is None else
    'Neo' if name == 'Mr Anderson' else
    name
)
Run Code Online (Sandbox Code Playgroud)

这是对其他几个答案的重申,但格式更好。我认为这最易读,这就是我将使用的方法。


Bry*_*ley 5

使用字典执行映射:

srepr = "'Modify " + {"p": "Pointer", "v": "value"}.get(self.register, "Unknown")
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,'\'...'您可以使用而不是"'...更多的清晰度。