Между этими двумя определениями нет никакой разницы . Именованные кортежи поддерживают как последовательность, так и строку, разделенную запятыми или пробелами, с именами в качестве входных данных.
Из документации :
field_names
являются последовательностью строк, таких как ['x', 'y']
. В качестве альтернативы , field_names
может быть одной строкой с каждым именем поля, разделенным пробелом и / или запятыми, например 'x y'
или 'x, y'
.
Bold выделено моим; строковый синтаксис 'x, y'
или 'x y'
является просто альтернативным способом написания имен полей.
Вы можете проверить атрибут namedtuple._fields
на любом объекте, чтобы подтвердить, что они действительно в конечном итоге с одинаковыми именами полей:
>>> from collections import namedtuple
>>> namedtuple('Point', 'x,y')._fields # string, no whitespace
('x', 'y')
>>> namedtuple('Point', ('x', 'y'))._fields # tuple, also a sequence
('x', 'y')
>>> namedtuple('Point', 'x y')._fields # string with lots of spaces, no comma
('x', 'y')