我试图理解使用以下表达式的代码
f"{current_file_start_time.year}{current_file_start_time.month:02}{current_file_start_time.day:02}"
下面是一个最小的工作示例,从Spyder控制台粘贴:
from datetime import datetime, timezone
current_file_start_time = datetime.now(timezone.utc)
current_file_start_time.month
Out[20]: 4
type(_)
Out[21]: int
f"{current_file_start_time.year}{current_file_start_time.month:02}{current_file_start_time.day:02}"
Out[22]: '20240410'
More specifically,月04
是由于部件{current_file_start_time.month:02}
. 相关规则似乎由this reference page来描述:
format_spec ::= [[fill]align][sign]["z"]["#"]["0"][width][grouping_option]["." precision][type]
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= digit+
grouping_option ::= "_" | ","
precision ::= digit+
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
{current_file_start_time.month:02}
中的前导0
似乎与以上format_spec
的几个组成部分相匹配,即:(i)[fill]
;(ii)["0"]
;和(iii)和前导数[width]
. 我找不到组件(ii)的描述,也许这是使用"0"
代替fill
的一个特例.
决定{current_file_start_time.month:02}
中的0
是代表fill
、"0"
还是代表width
的前导数的规则是什么? 虽然在这个例子中它可能没有太大的关系,但我不想猜测什么时候组成其他格式说明符?
我使用Python 3.9.