Существует три типа аргументов, которые может принимать функция Python: стандартные, переменные (*args) и ключевые слова (**kwargs). Стандартные аргументы являются самыми простыми, но имеют ограниченную функциональность. С другой стороны, *args и **kwargs позволяют сделать ваши функции более гибкими, принимая переменное количество входных данных.
Тип передачи аргументов, который вы выбираете, зависит от характера вашей функции и вашего предпочтительного стиля программирования.
Основные функции в Python
Чтобы понять, как работают два переменных аргумента в функциях Python, необходимо в первую очередь понять, почему они существуют. Простая функция объявляет фиксированное количество анонимных аргументов, например:
дефдополнение(а, б, в):
возвращаться а + б + в
Эта функция работает отлично, но есть возможности для улучшения. Самая большая проблема заключается в том, что он обрабатывает только два аргумента, поэтому он может сложить только два числа. Что делать, если вы хотите добавить два или четыре числа? Эта функция не позволит вам сделать это. Передача большего или меньшего количества аргументов, чем принимает функция, приведет к ошибке TypeError.
Конечно, вы можете создать больше функций, которые будут принимать различное количество аргументов. Но это неудобно и вообще плохо масштабируется. Вам также нужно будет создавать новую функцию каждый раз, когда вы хотите обработать новое количество входных данных.
Вот тут-то и появляются переменные аргументы и аргументы ключевых слов. Используя *args и **kwargs, вы можете определить гибкие функции, которые могут принимать переменное количество входных данных.
Что такое *args в Python?
Основная идея *args в Python состоит в том, чтобы позволить вам передавать переменное количество входных данных в вашу функцию. Это удобно в различных приложениях. Например, подумайте о программе-калькуляторе, в которой вы хотите дать пользователю возможность складывать два или более чисел и возвращать сумму.
Обратите внимание, что args — это просто имя переменной; это * важно. Вы можете использовать любое допустимое имя для аргумента переменной, если вы включаете расширение *.
Как использовать *аргументы
Вы можете изменить функцию addnum, чтобы она принимала переменное количество входных данных следующим образом:
дефдополнение(*аргументы):
всего = 0за число в аргументы:
всего = всего + число
возвращаться общий
Фрагмент кода выше использует цикл for для перебора предоставленных входных данных.
Затем вы можете вызвать функцию addnum с переменными аргументами, и она будет работать без ошибок:
Распечатать(дополнение(10, 1, 12, 12, 4, 54, 5)) ## возвращает 98
Распечатать(дополнение(14, 54, 5)) # возвращает 73
Распечатать(дополнение(10, 5)) # возвращает 15
Что такое **kwargs в Python?
Хотя и *args, и **kwargs позволяют нам передавать переменное количество входных данных функциям, последний специфичен для аргументов ключевого слова. Если вы не знаете, аргументы с ключевыми словами — это просто причудливые имена для аргументов с именем.
Еще одна уникальная особенность **kwargs заключается в том, что Python представляет значение как словарь.
Как использовать **kwargs
Как и *args, двойная звездочка является важным битом; вы можете использовать любое слово в качестве имени параметра. Вот пример использования **kwargs в Python:
дефеженедельно_посещаемость(**будние дни):
всего_посетителей = 0заучастникивбудние дни.ценности():
total_attendees = total_attendees + участникивозвращаться всего_посетителей
Распечатать(weekly_attendance (понедельник = 265, вторник = 698, среда = 365, четверг = 463, пятница = 234)) # возвращает 2025
Распечатать(weekly_attendance (понедельник = 265, пятница = 234)) # возвращает 499
Распечатать(weekly_attendance (среда = 365, четверг = 463, пятница = 234)) # возвращает 1062
Фрагмент кода выше также использует цикл for, но на этот раз со встроенным в Python методом values(). Этот метод возвращает объект представления всех значений в словаре. Метод values() позволяет вам цикл по словарю Python без хлопот.
Используйте переменные аргументы, чтобы сделать ваши функции Python гибкими
Аргументы функций удобны, но некоторым функциям может быть полезно принимать переменное количество аргументов. Аргументы с именованными ключевыми словами могут сделать ваш код более читабельным и простым в использовании. Вы должны использовать аргументы Python *args и **kwargs. Они довольно просты в использовании, и с их помощью вы можете сделать свои функции и программы более гибкими.
Мы надеемся, что, выполнив приведенные выше шаги и фрагменты кода, вы теперь сможете использовать переменные ключевые слова и аргументы, не являющиеся ключевыми словами, для своих функций.