为什么我们在 Python 中使用格式字符串而不是普通字符串 [duplicate]

Why we use format string not normal string in Python [duplicate]

提问人:mendax1234 提问时间:9/13/2023 更新时间:9/13/2023 访问量:50

问:

我现在正在从头开始学习 Python,我对我现在正在阅读的 Python 书中提到的一点感到困惑。该程序希望打印出带有名字和姓氏的全名。 书中的示例代码如下:

first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
message = f"Hello, {full_name.title}"
print(message)

我知道在第三行中,f“” 表示在 Python 3.11 中格式化字符串。但是,我很好奇为什么我应该在这里使用格式字符串而不是普通字符串。我的意思是,如果我重写第三行和第四行,如下所示,我认为它将提供相同的结果。

# full_name = f"{first_name} {last_name}"
full_name = first_name + " " + last_name
# message = f"Hello, {full_name.title}"
message = "Hello, " + full_name

所以,我很好奇格式字符串有什么特别之处吗?或者为了程序的简单性和优雅性,我应该始终使用格式字符串进行长而复杂的字符串输出?

感谢您的任何解释!

Python 字符串 格式

评论

1赞 CtrlZ 9/13/2023
你需要一本不同的书。该代码已损坏
0赞 Swifty 9/13/2023
检查一下:stackoverflow.com/questions/38722105/...
2赞 Corralien 9/13/2023
f-strings 可以充当模板字符串,因此计算变量和控制输出格式(仅获取 3 位小数或将字符串向左对齐)更简单(恕我直言)。此外,我认为每次在字符串中使用时,您都会创建一个新字符串,因为 str 是不可变的,所以效率不是很高。:.3f:<10+
0赞 fam-woodpecker 9/13/2023
这并不是说你应该或不应该使用其中一个,但对于更复杂的示例,在保持可读性和代码简单性方面,使用 f 字符串可能非常强大。

答:

0赞 anon 9/13/2023 #1

因此,由于以下原因,您应该使用格式字符串:

something = "qwerty"
something_else = 123

如果你尝试用“+”运算符连接这些变量,你会得到不同类型的 Python 异常

result = something + " " + something_else # there is exception

因此,最好使用 f 字符串:

result = f"{something} + {something_else}" # works good

最后,优秀的程序员使用 f 字符串而不是“+”运算符