Python 可以使用内联 elif 吗?

23 投票
7 回答
24811 浏览
提问于 2025-04-16 09:30
'Hello ' + ('there' if name is None else name)

这个和下面的意思一样:

msg = 'Hello '
if name is None:
    msg += 'there'
else:
    msg += name

这个的意思是什么:

msg = 'Hello '
if name is None:
    msg += 'there'
elif name == 'Mr Anderson'
    msg += 'Neo'
else:
    msg += name

编辑:这里是我想要简化的代码,供参考

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

7 个回答

7
msg = 'Hello ' + (
    'there' if name is None else
    'Neo' if name == 'Mr Anderson' else
    name
)

这段话是对其他几个回答的重复,但格式更好看。我觉得这样更容易阅读,这也是我会采用的方法。

8

使用字典来进行映射:

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

顺便说一下,使用 '\'...' 的时候,你可以用 "'... 来让代码看起来更清晰一些。

36
msg = "Hi " + ("there" if not name else ("Neo" if name == "Anderson" else name))

我觉得那样看起来挺难懂的。

撰写回答