Параметры ключевого слова **kwargs в Python
В Python функция может иметь параметр, которому предшествуют две звездочки(**). Например: **kwargs.
Что такое параметры **kwargs в Python
**kwargs называется параметром ключевого слова.
Если функция имеет параметр **kwargs, она может принимать переменное количество ключевых аргументов в качестве словаря.
Две звездочки(**) важны. Однако имя kwargs принято по соглашению. Поэтому вы можете использовать любые другие значимые имена, такие как **configs и **files.
В следующем примере определяется функция connect(), которая принимает параметр **kwargs:
def connect(**kwargs): print(type(kwargs)) print(kwargs)
Следующий вызов функции выводит на экран пустой словарь:
connect()
Выход:
<class 'dict'> {}
В этом примере мы не передали никаких аргументов функции connect(), kwargs — пустой словарь.
Следующий код вызывает функцию connect() и передает ей некоторые ключевые аргументы:
connect(server='localhost', port=3306, user='root', password='Py1hon!Xt')
На экране отображается следующий словарь:
<class 'dict'> {'server': 'localhost', 'port': 3306, 'user': 'root', 'password': 'Py1hon!Xt'}
Внутри функции connect() вы можете использовать аргумент kwargs как словарь.
Если вы хотите передать словарь в функцию, вам нужно добавить две звездочки(**) к аргументу, например:
def connect(**kwargs): print(kwargs) config = {'server': 'localhost', 'port': 3306, 'user': 'root', 'password': 'Py1thon!Xt12'} connect(**config)
Если функция имеет параметр **kwargs и другие параметры, вам необходимо разместить **kwargs после других параметров. В противном случае вы получите ошибку.
Синтаксис следующей функции connect() правильный:
def connect(fn, **kwargs): print(kwargs)
Однако синтаксис этой функции вызывает ошибку SyntaxError:
def connect(**kwargs, fn): print(kwargs)
Использование аргументов *args и **kwargs
Следующая функция имеет параметры *args и **kwargs:
def fn(*args, **kwargs): print(args) print(kwargs)
Функция fn может принимать переменное число позиционных аргументов. Python упакует их в кортеж и назначит кортеж аргументу args.
Функция fn также принимает переменное число аргументов-ключевых слов. Python упакует их в словарь и назначит словарь аргументу kwargs.
Например:
fn(1, 2, x=10, y=20)
Выход:
(1, 2) {'x': 10, 'y': 20}