#python #parameters #signature #args
#python #параметры #подпись #аргументы
Вопрос:
У меня есть функция, которая принимает переменное количество аргументов. Я хотел бы (в функции) получить переданное число. Объявление выглядит следующим образом:
def function(*args):
Функция вызывается следующим образом:
function(arg1, arg2, ...)
Комментарии:
1. Вы имели в виду:
len(args)
?2. Я полагаю, если вы выполните len(args), вы получите количество аргументов. Даже если я не понимаю, что это значит * .
3. @Gromph: это означает, что функция принимает переменное количество аргументов, и все они будут помещены в список с именем
args
.
Ответ №1:
Вы можете определить функцию следующим образом, чтобы получить значения аргументов:
def function(*args):
for i in range(len(args)):
print(args[i])
function(3, 5, 8)
Вот результат:
3
5
8
То есть args[i]
получает значение i-го переданного параметра function
.
Комментарии:
1. Было бы более питоническим повторять так
for arg in args: print(arg)
Ответ №2:
Чтобы получить количество переданных параметров, вы можете использовать модуль подписи. Пример:
from inspect import signature
def someMethod(self, arg1, kwarg1=None):
pass
sig = (signature(someMethod))
print(len(list(sig.parameters)))
Вывод:
3
Чтобы получить имена параметров, вы делаете:
def someMethod(self, arg1, kwarg1=None):
pass
sig = (signature(someMethod))
print(list(sig.parameters))
Подробнее читайте
здесь
Комментарии:
1. В моем случае это не сработало бы, поскольку сигнатурой является *args , которая не представляет переданные документы