In" 6.1.3。格式字符串语法"在Python 3.5.2文档中,field_name
的替换字段语法的str.format()
写成如下:
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
右边的明星是什么意思?我可以猜测我可以使用arg_name.attribute
或arg_name[element_index]
元素获取对象的属性,但我不知道这个额外的星是否意味着我可以对该对象做更多的事情。我猜这意味着.attribute_name
和[element_index]
是可选的,但我认为括号已经暗示了这一点。
答案 0 :(得分:1)
Python Language Reference, section 1.2.说:
词法分析和语法的描述使用修改后的BNF 语法符号。这使用以下样式的定义:
name ::= lc_letter (lc_letter | "_")* lc_letter ::= "a"..."z"
第一行表示
name
是lc_letter
后跟一个序列 零个或多个lc_letter
和下划线。反过来lc_letter
任何单个字符'a'
到'z'
。 (这个规则实际上是 遵守词汇和语法规则中定义的名称 文档。)每个规则都以名称(由规则定义的名称)和
::=
开头。垂直条(|
)用于分隔备选方案;它是这种表示法中绑定最少的运算符。星号(*
)表示前一项的零次或多次重复;同样,加号(+
)表示一个或多个重复,括在方括号([ ]
)中的短语表示零次或一次出现(换句话说,所附短语是可选的)。*
和+
运算符尽可能紧密绑定;括号用于分组。文字字符串用引号括起来。空白区域仅对分隔令牌有意义。规则通常包含在一行中;具有许多替代方案的规则可以在第一个开始之后用垂直条替换每行。
因此,如前所述,星号*
表示前一组的重复次数为零或更多。