field_name输入中的星号在Python str.format()文档中意味着什么?

时间:2016-10-09 21:21:42

标签: python

In" 6.1.3。格式字符串语法"在Python 3.5.2文档中,field_name的替换字段语法的str.format()写成如下:

field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*

右边的明星是什么意思?我可以猜测我可以使用arg_name.attributearg_name[element_index]元素获取对象的属性,但我不知道这个额外的星是否意味着我可以对该对象做更多的事情。我猜这意味着.attribute_name[element_index]是可选的,但我认为括号已经暗示了这一点。

1 个答案:

答案 0 :(得分:1)

Python Language Reference, section 1.2.说:

  

词法分析和语法的描述使用修改后的BNF   语法符号。这使用以下样式的定义:

name      ::=  lc_letter (lc_letter | "_")*
lc_letter ::=  "a"..."z"
     

第一行表示namelc_letter后跟一个序列   零个或多个lc_letter和下划线。反过来lc_letter   任何单个字符'a''z'。 (这个规则实际上是   遵守词汇和语法规则中定义的名称   文档。)

     

每个规则都以名称(由规则定义的名称)和::=开头。垂直条(|)用于分隔备选方案;它是这种表示法中绑定最少的运算符。星号(*)表示前一项的零次或多次重复;同样,加号(+)表示一个或多个重复,括在方括号([ ])中的短语表示零次或一次出现(换句话说,所附短语是可选的)。 *+运算符尽可能紧密绑定;括号用于分组。文字字符串用引号括起来。空白区域仅对分隔令牌有意义。规则通常包含在一行中;具有许多替代方案的规则可以在第一个开始之后用垂直条替换每行。

因此,如前所述,星号*表示前一组的重复次数为零或更多。