Могу ли я распаковать/деструктурировать typing.NamedTuple?
Это простой вопрос, поэтому я удивлен, что не могу найти его на SO (извините, если я его пропустил), и он всегда всплывает в моей голове, когда я обдумываю рефакторинг для замены кортежа на NamedTuple.
Могу ли я распаковать
typing.NamedTuple
в качестве аргументов или в качестве деструктурирующего присваивания, как я могу с
tuple
?
1 ответ
Да , конечно, можете.
from typing import NamedTuple
class Test(NamedTuple):
a: int
b: int
t = Test(1, 2)
# destructuring assignment
a, b = t
# a = 1
# b = 2
def f(a, b):
return f"{a}{b}"
# unpack
f(*t)
# '12'
Порядок распаковки — это порядок полей в определении.