python 中这个 fstring 背后的逻辑是什么?

What is the logic behind this fstring in python?

来自这个问题:

我们有这个代码:

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

我正在寻找有关 f 弦的 explanation/reference 读物。特别是,:0{...} 语法和 b 的目的是什么?

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

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

所以这会在 nbits 宽且前导零的字段中以二进制形式打印 (1 << nbits) - 1

规范中的前导零似乎不相关,因为打印的值将是 nbits 1 -- 不需要任何填充。