2

我喜欢 python 3.6 中的新 f-Strings,但是在尝试在表达式中返回字符串时遇到了一些问题。以下代码不起作用,并告诉我我使用了无效的语法,即使表达式本身是正确的。

print(f'{v1} is {'greater' if v1 > v2 else 'less'} than {v2}') # Boo error

它告诉我'greater'并且'less'是意想不到的标记。如果我用两个包含字符串甚至两个整数的变量替换它们,错误就会消失。

print(f'{v1} is {10 if v1 > v2 else 5} than {v2}') # Yay no error

我在这里想念什么?

4

3 回答 3

5

您仍然必须遵守有关引号内引号的规则:

v1 = 5
v2 = 6

print(f'{v1} is {"greater" if v1 > v2 else "less"} than {v2}')

# 5 is less than 6

或者可能更具可读性:

print(f"{v1} is {'greater' if v1 > v2 else 'less'} than {v2}")

请注意,常规字符串允许\',即在引号中使用反斜杠作为引号。如 PEP498 所述,这在 f 字符串中是不允许的:

反斜杠可能不会出现在表达式中的任何位置。

于 2018-12-04T09:34:52.033 回答
3

只需混合引号,检查如何 格式化字符串文字

print(f'{v1} is {"greater" if v1 > v2 else "less"} than {v2}')
于 2018-12-04T09:33:46.600 回答
0

引号导致错误。

用这个:

print(f'{v1} is {"greater" if v1 > v2 else "less"} than {v2}') 
于 2018-12-04T09:33:59.583 回答