4

代码中的问题:为什么python F字符串插值的用法用引号包装?

a = 'test' 

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

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

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

我的问题是,为什么情况下,两个打印的报价?

我在documentation中没有找到任何明确的内容。我发现详述最接近这是在PEP此功能:

(语法为F-字符串)

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

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

我假定的a值被格式化一些格式化器,其中,由于数据类型是串,用引号包裹它。这个结果然后返回到周围的F字符串格式化实例。

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

+2

您的2.7文档链接将不会有关于3.6功能的任何内容。相反,https://docs.python.org/3.6/reference/lexical_analysis.html#f-strings –

回答

7

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

+1

嵌套{}仅在可选的格式规范(':')后被识别为嵌套替换字段。它们在替换表达式中具有它们的正常含义,并且导致一个集合,可以通过执行print(f'{{{a}}}'' –

相关问题