Аргументы и 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?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?