为了账号安全,请及时绑定邮箱和手机立即绑定

哪一个?f 字符串或在 python3 中使用格式

哪一个?f 字符串或在 python3 中使用格式

尚方宝剑之说 2022-10-18 17:22:05
python3中哪个更好?它们具有相同的输出,但大多数代码都使用格式而不是 F 字符串。a = "Test"   print(f"this is for {a}")或格式?print("This is for {}".format(a))有时当我将 F 字符串用于目录和文件路径时,我遇到了一些错误,但使用格式没有问题。
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

正如评论中所指出的,Real Python 网站上提供了一个很好的字符串格式化方法比较。

在许多情况下,与其他变体相比,f 字符串更具可读性并且更不易出现人为错误,但需要 Python >= 3.6,因此如果需要向后兼容,则可能必须避免使用。总的来说,它们是一个不错的选择,但不时会出现一些问题。


嵌套 f 字符串时,必须小心使用引号。这失败了:


>>> f"Hello {"there"}"

  File "<stdin>", line 1

    f"Hello {"there"}"

                  ^

SyntaxError: invalid syntax

但是在内部使用其他引号可以解决这个问题:


>>> f"Hello {'there'}"

'Hello there'

但是,您不能将包含字符串文字的 f 字符串嵌套得比这更深,因为您没有更多不同的引号可供使用。


我经常偶然发现的另一个问题是在 f-string 表达式部分中不允许使用反斜杠的限制,即使它们在字符串文字中:


>>> f"Path: {'C:\Windows'}"

  File "<stdin>", line 1

SyntaxError: f-string expression part cannot include a backslash

您可以使用中间变量来解决这个问题,或者format():


>>> path = 'C:\Windows'

>>> f"Path: {path}"

'Path: C:\\Windows'


>>> "Path: {0}".format('C:\Windows')

'Path: C:\\Windows'

这可能是您使用 f 字符串格式化路径时遇到的问题。'\n'在使用 f-string 表达式部分中包含换行符的字符串文字时,我个人倾向于遇到此限制。


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信