Автор оригинала: Python Examples.
Python ** kwargs Позволяет вызов функции передавать переменное количество к эй W Орд (назван) arg к функции.
Детатип Kwargs – словарь. Итак, ключевые слова и соответствующие значения аргументов приходят в качестве ключа: значение пар. Количество ключа: пары значений в KWarg определяются только на вызове функций во время выполнения.
Двойная звездочка ** До кваргов – это оператор распаковки. Это распаковывает аргументы, переданные функции, как словарь.
В этом руководстве мы узнаем, как использовать ** kwargs в определении функции, чтобы принять любое количество именованных аргументов функции.
Пример: Python ** Kwargs
В этом примере мы продемонстрируем простое использование, только что делать ** кварги. Мы создадим функцию, которая может принять любое количество аргументов ключевых слов.
Python Program
def myFunction(**kwargs): for kw in kwargs: print(kw, '-', kwargs[kw]) if __name__ == "__main__": myFunction(a = 24, b = 87, c = 3, d = 46)
Выход
a - 24 b - 87 c - 3 d - 46
Мы называем myфункцию () с четырьмя именованными аргументами, а именно A, B, C и D.
В определении MIFunction () мы использовали параметр Kwargs с ** оператором распаковки, чтобы принять любое количество именованных аргументов.
В первом именованном аргументе , A – это ключевое слово и 24 – это значение аргумента. Следовательно, a идет как ключ и 24 идет как значение. В функции, A и 24 могут быть доступны в качестве ключа: значение пара из словаря кварг. То же объяснение проводит оставшиеся именованные аргументы, переданные функции.
Kwargs – это имя параметра
Kwargs – это просто имя, которое мы дали параметру, которое может принять любое количество именованных аргументов. Вы можете использовать любое имя вместо Kwargs, это соответствует вашему требованию.
В следующем примере программа мы будем использовать другое имя, скажем, Компьютеры
вместо Kwargs для аргументов ключевых слов в Myфункция ()
Определение функции.
Python Program
def myFunction(**computers): for kw in computers: print(kw, '-', computers[kw]) if __name__ == "__main__": myFunction(dell = 1299.50, asus = 1870.00, hp = 1990.50)
Выход
dell - 1299.5 asus - 1870.0 hp - 1990.5
kwargs – словарь
Мы уже узнали, что DataType Kwargs – это словарь. Итак, вы можете использовать все методы словаря на кварге.
Например, мы будем использовать метод Dict.Items (), чтобы повторять ключи и значения одновременно.
Python Program
def myFunction(**kwargs): for key, value in kwargs.items(): print(key, '-', value) if __name__ == "__main__": myFunction(a = 24, b = 87, c = 3, d = 46)
Выход
a - 24 b - 87 c - 3 d - 46
** Kwargs с другими параметрами
Просто функция может иметь несколько параметров в его определении, мы также можем иметь параметры вместе с ** кварг. Пожалуйста, помните, что ** Kwargs – это просто еще один параметр. Единственное отличие ** Kwargs из других параметров состоит в том, что она может принять несколько названных аргументов.
В следующем примере мы определим функцию myфункцию (), с параметрами x, y и ** kwargs.
Python Program
def myFunction(x, y, **kwargs): print(x) print(y) for key, value in kwargs.items(): print(key, '-', value) if __name__ == "__main__": myFunction("ABC", "MNO", a = 24, b = 87, c = 3, d = 46)
Выход
ABC MNO a - 24 b - 87 c - 3 d - 46
** kwargs с * args
Пока ** kwargs могут принять любое количество названных аргументов, Python * args может принять любое количество позиционных аргументов.
Вы можете использовать * args и ** Kwargs в определении функции, чтобы принять как позиционные аргументы, так и названные аргументы, количество которых неизвестно.
В следующем примере мы определим функцию с помощью как * Args, так и ** кварг.
Python Program
def myFunction(*args, **kwargs): print(args) print(kwargs) if __name__ == "__main__": myFunction("hello", "mars", a = 24, b = 87, c = 3, d = 46)
Выход
('hello', 'mars') {'a': 24, 'b': 87, 'c': 3, 'd': 46}
Просто чтобы напомнить, DataType of Args – кортеж, а DataType Kwargs – словарь.
Резюме
В этом руководстве примеров Python мы узнали, как использовать ** Kwargs, чтобы принять любое количество именованных аргументов в функции.