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 -- 不需要任何填充。
来自这个问题:
我们有这个代码:
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 -- 不需要任何填充。