Python 3.6 中是否有格式化的字节字符串文字?

新手上路,请多包涵

我正在寻找格式化的字节字符串文字。具体来说,相当于

name = "Hello"
bytes(f"Some format string {name}")

可能类似于 fb"Some format string {name}"

这样的事情存在吗?

原文由 Enrico Borba 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 642
2 个回答

,这个想法在 PEP 中被明确驳回

出于同样的原因,我们不支持 bytes.format() ,您不能将 'f''b' 字符串文字结合使用。主要问题是对象的 __format__() 方法可能返回与字节字符串不兼容的 Unicode 数据。

二进制 f 字符串首先需要 bytes.format() 的解决方案。这个想法过去曾被提出,最近一次是在 PEP 461 中。对此类功能的讨论通常建议

  • 添加诸如 __bformat__() 之类的方法,以便对象可以控制如何将其转换为字节,或者

  • 具有 bytes.format() 不像 str.format() 那样通用或可扩展。

如果需要这样的功能,这两者在未来都将保留为选项。

原文由 jwodder 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 3.6+ 中你可以这样做:

 >>> a = 123
>>> f'{a}'.encode()
b'123'

原文由 johnson 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题