Параметры ключевого слова **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}
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *