【问题标题】:What is the logic behind this fstring in python?python中这个f字符串背后的逻辑是什么?
【发布时间】:2022-02-08 13:12:14
【问题描述】:

来自这个问题:Converting an integer to signed 2's complement binary string

我们有这个代码:

def f(n):
    nbits = n.bit_length() + 1
    return f"{n & ((1 << nbits) - 1):0{nbits}b}"

我正在寻找有关 f 字符串的一些解释/参考读物。特别是:0{...} 语法和b 的用途是什么?

【问题讨论】:

  • 你读过 Python 格式化教程吗?它解释了: 之后的一切是如何工作的。
  • 我不知道这个 f-string 背后的逻辑,但我肯定知道从中得出的结论:将所有东西都打包到 f-string 单线中会造成难以理解的混乱。

标签: python binary


【解决方案1】:

: 将要打印的值与格式规范分开。

在格式规范中,最后一个字符指定格式的类型;在这种情况下,b 表示二进制。前面的数字指定字段;在这种情况下,它是 nbits 变量的值(嵌套的 {expression} 被扩展并用作格式规范的一部分)。并且字段宽度前的前导零表示用零填充。

因此,这会在 nbits 宽且前导零的字段中以二进制形式打印 (1 &lt;&lt; nbits) - 1

规范中的前导零似乎无关紧要,因为打印的值将是nbits 1——不需要填充。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多