条件字符串插值

Conditional string interpolation

下面的语法有什么问题?我想将 x 分配给 {diff} short of 如果 diff > 0 否则它将是一个空字符串。

diff = 1
x = f"{diff 'short of' if diff > 0 else ''}"

编辑: 根据评论,似乎正确的方法是:

x = f"{diff} short of" if diff > 0 else ""

但是,我还需要将 x 放在另一个字符串插值中,例如

y = f"That's {x} your best"

现在的问题是,如果x为空,则y中有一个extraspace,即y = "That's your best" 而不是 "That's your best"。 字符串插值是否自动添加 space?

你的问题:

Does string interpolation auto add an space?

没有。您只是在第一个模板字符串的末尾缺少一个 space,而在第二个模板字符串中有一个 space 太多了。使用:

x = f"{diff} short of " if diff > 0 else ""

并且:

y = f"That's {x}your best"

现在,仅当 x 不为空时,才会添加 x 之后的尾随 space。