Python 初学者问题:我应该使用f字符串吗?

Python 初学者问题:我应该使用f字符串吗?,python,python-3.x,string,f-string,Python,Python 3.x,String,F String,你好 我对Python非常陌生,所以我有一个问题。 这两张照片产生相同的结果,至少对我来说,第一个版本看起来更可读。 我是否应该坚持使用f'版本,因为它以后会给我带来问题/性能更差/今天的python标准/? 或者,这仅仅是这些版本中的一个一致使用的问题 print('My first bycicle was a '+ bicycles[1]) print(f'My first bicycle was a {bicycles[1]})') 来自,一个致力于文字字符串插值的PEP(Python增

你好

我对Python非常陌生,所以我有一个问题。 这两张照片产生相同的结果,至少对我来说,第一个版本看起来更可读。 我是否应该坚持使用f'版本,因为它以后会给我带来问题/性能更差/今天的python标准/? 或者,这仅仅是这些版本中的一个一致使用的问题

print('My first bycicle was a '+ bicycles[1])
print(f'My first bicycle was a {bicycles[1]})')
来自,一个致力于文字字符串插值的PEP(Python增强建议)

F字符串提供了一种在字符串文本中嵌入表达式的方法, 使用最小语法应该注意的是,f字符串实际上是 在运行时计算的表达式,而不是常量值。用Python 源代码中,f字符串是一个文本字符串,前缀为“f”,它 包含大括号内的表达式。表达式替换为 他们的价值观

这里的要点是突出显示的文本,这意味着由于CPython编译器内部实现了AST(抽象语法树),这使得它们的计算速度更快

此外,我认为它更具可读性,并且在字符串中包含更多变量的情况下,它提供了更好的可读性。使用此语法可以轻松执行多行字符串插值

例如:


我认为
print(“我的第一个bycicle是一个{}”。格式(bicycles[1]))
看起来更可读。如果需要格式化,应该使用
%
-formatting、
str.format
或f-string。第一个版本对这种情况没有帮助。关于性能,f-string要快得多。f-string更具可读性,速度更快,并且允许计算占位符中的表达式。绝对是最好的方法。例如,
f'{a:.3f}'
不能(简单地)通过
+
连接来执行。我不明白引用的文本如何支持您的语句“由于CPython编译器内部实现AST(抽象语法树),使其速度更快,因此计算效果更好。”事实上,我完全不理解这句话,并且怀疑它是真的。在引擎盖下,
f-string
处理分为括号内的值的计算和它们与常量字符串组件的其余部分的放置。对于复杂的
f字符串
,AST在快速评估中起着至关重要的作用。要查看如何创建AST,可以使用
AST
library
AST.dump(AST.parse(''f'Sum:{a+b}''))
。要深入了解
f-string
vs
str.format()
vs
%-格式化的速度比较,您需要查看可以使用
dis
库生成的反汇编字节码@JW。
f'''
    My first bicycle was a {bicycles[0]}
    It has color {bicycles[0]["color"]}
    and has {bicycles[0]["gears"]} gears.
'''