Автор оригинала: Python Examples.
Python * Args Параметр в определении функции позволяет функции принимать несколько аргументов, не зная, сколько аргументов. Другими словами, это позволяет функцию принять переменное количество аргументов.
Тип данных args – кортеж. Внутри функции вы можете получить доступ к всем аргументам, передаваемыми как * args, используя контуру для цикла. Или вы можете использовать индекс для доступа к отдельным аргументам. Мы проверим тип данных ARGS в примере ниже.
В этом руководстве мы узнаем, как использовать * args в определении функции с помощью примеров программ.
Пример: Python * args
Мы уже знаем, что * Args Parameter позволяет функции принять любое количество аргументов. В этом примере мы напишем функцию добавления, которая может принять любое количество аргументов и возвращает добавление всех этих аргументов.
Python Program
def addition(*args): result = 0 for arg in args: result += arg return result if __name__ == "__main__": sum = addition(2, 5, 1, 9) print(sum) sum = addition(5) print(sum) sum = addition(5, 4, 0.5, 1.5, 9, 2) print(sum)
Выход
17 5 22.0
args in * args это просто имя
ARGS – это просто имя параметра. Вы можете предоставить любое имя, а не args, как и любой другой параметр в определении функции. Символ звездочки (*) Перед именем параметра является важной частью. Он говорит Python, что этот параметр собирается принять переменное количество аргументов. Из-за его функциональности символ звездочки называется Распаковка оператора Отказ
Мы будем использовать один и тот же пример выше и использовать другое имя для args, говорят цифры.
Python Program
def addition(*numbers): result = 0 for number in numbers: result += number return result if __name__ == "__main__": sum = addition(2, 5, 1, 9) print(sum)
Выход
17
args in * args – кортеж
Основываясь на предыдущих примерах, уже установлено, что мы можем использовать ARGS в качестве итератора. Хорошо! Если бы мы могли использовать итератор на args, то то, что может быть тип данных ARGS. Есть только один способ выяснить. Используйте функцию встроенного типа Python ().
Python Program
def addition(*numbers): print(type(numbers)) if __name__ == "__main__": addition(2, 5, 1, 9)
Выход
Громко и ясно, как говорится. Параметр dataatype of args – кортеж. Итак, мы получаем кортеж, когда мы используем распаковку оператора с параметром (* args), чтобы принять переменное количество аргументов.
Поскольку кортеж неизменен (по крайней мере мелкий уровень), логично сохранить тип данных ARGS в качестве кортежа вместо списка.
* args с другими параметрами
* args – это просто еще один параметр, который может принять несколько номеров позиционных аргументов. Вы можете использовать * args с другими параметрами в определении вашей функции.
В следующем примере мы создадим функцию, которая примет аргументы для некоторых указанных параметров, а затем любое количество аргументов, использующих * args.
Python Program
def calculator(operation, *numbers): if operation == "add": result = 0 for num in numbers: result += num return result if operation == "product": result = 1 for num in numbers: result *= num return result if __name__ == "__main__": x = calculator("add", 2, 5, 1, 9) print(x) x = calculator("product", 3, 5, 2) print(x)
Выход
17 30
* args с ** kwargs
Пока * args может принять любое количество позиционных аргументов, Python ** Kwargs может принять любое количество именованных аргументов.
Вы можете использовать * 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 мы узнали, как использовать * args для записи функций, которые могут принять любое количество аргументов.