Могу ли я распаковать/деструктурировать 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'

Порядок распаковки — это порядок полей в определении.

Другие вопросы по тегам