Как определить количество аргументов, переданных функции?

#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 , которая не представляет переданные документы