Аргументы и Kwargs Python

Python args and kwargs Made Easy

*args и **kwargs могут показаться пугающими, но правда в том, что их не так уж сложно понять, и они могут наделить ваши функции большой гибкостью.

Прочтите статью Python *args и **kwargs Made Easy для более глубокого введения.

Args и Kwargs

*args и **kwargs позволяют передавать неопределенное количество позиционных и именованных аргументов при вызове функции.

# Define a function that accepts any number of positional and keyword arguments
def some_function(*args, **kwargs):
    pass

# Call with any number of positional arguments
some_function(arg1, arg2, arg3)

# Call with any number of keyword arguments
some_function(key1=arg1, key2=arg2, key3=arg3)

# Call with both positional and keyword arguments
some_function(arg, key1=arg1)

# Or call with no arguments at all
some_function()

Python conventions

Слова *args и **kwargs являются соглашениями. Они не навязываются интерпретатором, но считаются хорошей практикой в сообществе Python.

args

Вы можете получить доступ к аргументам через переменную args:

# *args collects positional arguments into a tuple
def some_function(*args):
    print(f'Arguments passed: {args} as {type(args)}')

# Pass multiple arguments - they'll be collected into args tuple
some_function('arg1', 'arg2', 'arg3')
Arguments passed: ('arg1', 'arg2', 'arg3') as <class 'tuple'>
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

В какой тип данных собираются аргументы *args?
A. Список
B. Кортеж (tuple)
C. Словарь
D. Множество (set)

kwargs

Именованные аргументы (keywords) доступны через переменную kwargs:

# **kwargs collects keyword arguments into a dictionary
def some_function(**kwargs):
    print(f'keywords: {kwargs} as {type(kwargs)}')

# Pass keyword arguments - they'll be collected into kwargs dict
some_function(key1='arg1', key2='arg2')
keywords: {'key1': 'arg1', 'key2': 'arg2'} as <class 'dict'>
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

В какой тип данных собираются аргументы **kwargs?
A. Список
B. Кортеж (tuple)
C. Словарь
D. Множество (set)