6

有问题的代码:

a = 'test'

# 1)
print(f'{a}') # test

# 2)
print(f'{ {a} }') # {'test'}

# 3)
print(f'{{ {a} }}') # {test}

我的问题是,为什么案例二会打印这些引号?

我没有在文档中明确找到任何内容。我发现的最接近的细节是在此功能的PEP中:

(F 字符串的语法)

f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... '

然后使用格式协议格式化表达式,使用格式说明符作为参数。生成 f 字符串的值时使用结果值。

我想 的值a是用一些格式化程序格式化的,因为数据类型是字符串,所以用引号括起来。然后将该结果返回到周围的 F 字符串格式化实例。

这个假设正确吗?还有其他地方可以更清楚地记录这一点吗?

4

1 回答 1

10

f'{ {a} }'中,{a}(如语法所示)被解释为 Python 表达式。在 Python 中,{a}构造set一个元素的 a ( a),str集合的化合使用repr其元素的 a,这就是引号的来源。

于 2017-07-14T21:55:19.093 回答