我正在尝试使用collections.namedtuple
。我浏览了文档并遇到了以下语法。
Person = namedtuple('Person', 'name,age,gender')
anup = Person(name='Anup', age=21, gender='male')
以下也可以正常使用
Person = namedtuple('Person', 'name age gender')
anup = Person(name='Anup', age=21, gender='male')
我遇到了以下语法,就像这样。
Person = namedtuple('Person', 'name age gender' 'address phone')
价:https://github.com/tensorflow/models/blob/master/textsum/batch_reader.py#L29
如果我尝试执行以下操作
anup = Person(name='Anup', age=21, gender='male', address='xyz', phone='1234')
它会引发错误说明
TypeError: __new__() got an unexpected keyword argument 'gender'
但这似乎工作得很好。
anup = Person(name='Anup', age=21, genderaddress='xyz', phone='1234')
我无法理解语法,以及两个属性如何合并在一起。
答案 0 :(得分:3)
因为:
Person = namedtuple('Person', 'name age gender' 'address phone')
等同于:
Person = namedtuple('Person', 'name age genderaddress phone')
Here是文档:
多个相邻的字符串或字节文字(由空格分隔), 可能使用不同的引用约定,允许和它们的 意思与它们的连接相同。因此,
"hello" 'world'
是 相当于"helloworld"
。
请注意,这只是python语法的一部分,对namedtuple
没什么特别的。
在链接中,我们有以下内容:
ModelInput = namedtuple('ModelInput',
'enc_input dec_input target enc_len dec_len '
'origin_article origin_abstract') ^
注意空格。