我在我的 Python 3.5 项目中经常使用 .format()
,但我担心它会在下一个 Python 版本中被弃用,因为 f-strings,一种新的字符串文字。
>>> name = "Test"
>>> f"My app name is {name}."
'My app name is Test.'
格式化字符串功能是否可以完全取代旧的 .format()
?从现在开始,在所有情况下都使用新样式会更好吗?
我理解这是基于“简单胜于复杂”的理念。但是,性能问题呢?它们之间有什么区别吗?或者它只是相同功能的简单外观?
原文由 nivhanin 发布,翻译遵循 CC BY-SA 4.0 许可协议
不要,
str.format
不会出现(也没有理由)很快离开,引入f
前缀字符串的 PEP 甚至 在其摘要中指出:引入格式化字符串是为了解决其他格式化字符串方法的一些缺点;不要扔掉旧方法并强迫天知道有多少项目要使用 f-string,如果他们希望他们的代码适用于 Python 3.6+。
至于它们的性能,我最初怀疑它们可能更慢似乎是错误的,f 弦似乎很容易胜过它们的
.format
对应物:在撰写本文时,这些是针对 CPython 存储库的 master 分支完成的;它们肯定会发生变化:
f-strings
,作为一项新功能,可能有可能的优化.format
更快(例如 Speedup 方法调用 1.2x )但真的,不要太担心速度,担心什么对你和其他人来说更具可读性。
在许多情况下,这将是
f-strings
,但 在某些情况 下format
更好。