Что такое звездочки * в Python? Префиксные операторы * и **

preview_player
Показать описание
Префиксные операторы * и **

При чтении проектов Python с открытым исходным кодом вам, вероятно, неоднократно встречался следующий стиль определения функции:

def func(*args, **kwargs):
pass
Что означают эти странные звездочки?

При определении Python-функции можно определить параметр, снабженный звездочками, чтобы собрать неограниченное количество аргументов.

Параметр с префиксом * может собрать любое количество позиционных аргументов в tuple.
Параметр с префиксом в виде двойной * может собрать любое количество аргументов ключевых слов в dict.
Кроме того, в некоторых случаях использование звездочек в Python делает код более элегантным.

Например, с помощью звездочек можно производить распаковку итерируемых переменных:

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = [*A, *B, *C]
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]
Рекомендации по теме