Сделайте свои функции более гибкими и простыми в использовании с помощью этих вариантов стандартных аргументов
Существует три типа аргументов, которые может принимать функция Python: стандарт, переменная (*args) и ключевое слово (**kwargs). Стандартные аргументы являются самыми простыми, но имеют ограниченную функциональность. С другой стороны, *args и **kwargs позволяют сделать ваши функции более гибкими, принимая переменное количество входных данных.
Выбранный тип передачи аргументов зависит от характера функции и предпочитаемого стиля программирования.
Основные функции в Python
Чтобы понять, как работают два аргумента переменных в функциях Python, важно понять, для чего они существуют в первую очередь. Простая функция объявляет фиксированное количество анонимных аргументов следующим образом:
def addnum(a, b, c):
return a + b + c
Эта функция работает отлично, но есть возможности для улучшения. Самая большая проблема заключается в том, что он обрабатывает только два аргумента, поэтому он может складывать только два числа. Что делать, если вы хотите добавить два или четыре числа? Эта функция не позволит вам сделать это. Передача большего или меньшего количества аргументов, чем принимает функция, приведет к TypeError.
Конечно, вы можете создать больше функций для принятия различного количества аргументов. Но это неудобно и не будет хорошо масштабироваться. Вам также нужно будет создавать новую функцию каждый раз, когда вы хотите обрабатывать новое количество входных данных.
Вот где появляются переменные аргументы и аргументы ключевых слов. Используя *args и **kwargs, вы можете определить гибкие функции, которые могут принимать переменное количество входных данных.
Что такое *args в Python?
Основная идея *args в Python заключается в том, чтобы позволить вам передавать переменное количество входных данных вашей функции. Это пригодится в различных приложениях. Например, подумайте о программе калькулятора, где вы хотите дать пользователю возможность сложить два или более чисел и вернуть сумму.
Обратите внимание, что args — это просто имя переменной; это * это важно. Для аргумента переменной можно использовать любое допустимое имя, если вы включите *.
Как использовать *args
Можно изменить функцию addnum, чтобы она принимала переменное количество входных данных следующим образом:
def addnum(*args):
total = 0
for num in args:
total = total + num
return total
Приведенный выше фрагмент кода использует цикл for для итерации по предоставленным входным данным.
Затем вы можете вызвать функцию addnum с переменными аргументами, и она будет работать без выдачи ошибки:
print(addnum(10, 1, 12, 12, 4, 54, 5)) # # returns 98
print(addnum(14, 54, 5)) # returns 73
print(addnum(10, 5)) # returns 15
Что такое **kwargs в Python?
Хотя и *args, и **kwargs позволяют нам передавать переменное количество входных данных функциям, последнее специфично для аргументов ключевых слов. Если вы не знаете, аргументы ключевых слов - это просто причудливые имена для аргументов с именем.
Еще одна уникальная особенность **kwargs заключается в том, что Python представляет значение в виде словаря.
Как использовать **kwargs
Как и *args, двойная звездочка является важным битом; в качестве имени параметра можно использовать любое слово. Вот пример того, как использовать **kwargs в Python:
def weekly_attendance(**weekdays):
total_attendees = 0
for attendees in weekdays.values():
total_attendees = total_attendees + attendees
return total_attendees
print(weekly_attendance(monday = 265, tuesday = 698, wednesday = 365, thursday = 463, friday = 234)) # returns 2025
print(weekly_attendance(monday = 265, friday = 234)) # returns 499
print(weekly_attendance(wednesday = 365, thursday = 463, friday = 234)) # returns 1062
Приведенный выше фрагмент кода также использует цикл for, но на этот раз со встроенным методом python values(). Этот метод возвращает объект view всех значений в словаре. Метод values() позволяет без лишних хлопот просматривать словарь Python.
Используйте переменные аргументы, чтобы сделать функции Python гибкими
Аргументы функций удобны, но некоторые функции могут извлечь выгоду из принятия переменного числа аргументов. Именованные аргументы ключевых слов могут сделать код более читабельным и простым в использовании. Вы должны принять аргументы Python *args и **kwargs. Они довольно просты в использовании, и с их помощью вы можете сделать свои функции и программы более гибкими.
Выполнив описанные выше шаги и фрагменты кода, мы надеемся, что теперь вы можете использовать переменные ключевые слова и аргументы без ключевых слов для своих функций.