2015-10-12 5 views
7

Я новичок в Python и хочу знать, есть ли простой способ получить количество переданных параметров в функции Python.Проверьте количество параметров, переданных в функции Python

a(1, 2, 3) ==>3 
a(1, 2) ==>2 
+0

Возможный дубликат [Получение списка имен параметров внутри функции python] (http://stackoverflow.com/questions/582056/getting-list-of-parameter-names-inside-python-function) – TigerhawkT3

+0

Другая возможность [здесь ] (http://stackoverflow.com/questions/218616/getting-method-parameter-names-in-python). – TigerhawkT3

+0

И я мог бы также сказать, что это [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – TigerhawkT3

ответ

4

Вы можете сделать это с помощью местных жителей()

Важно отметить, что это должно быть сделано, как, в конечном счете, ваш первый шаг в вашем методе. Если вы вводите новую переменную в свой метод, вы измените свои результаты. Поэтому убедитесь, что вы будете следовать так:

def a(a, b, c): 
    # make this your first statement 
    print(len(locals())) 

Если вы сделали это:

def a(a, b, c): 
    z = 5 
    print(len(locals())) 

Вы бы в конечном итоге получить 4, который не был бы прав для ожидаемых результатов.

Документация по locals()

+1

Возможно, стоит упомянуть, что вы должны сделать это, прежде чем выполнять какие-либо задания в рамках функции, чтобы она работала. – Marius

+0

Спасибо @Marius, хороший звонок. Я изменил его, дайте мне знать, что вы думаете. – idjaw

+1

Спасибо, на самом деле я буду использовать в начале функции. – JasmineOT

8
def a(*args, **kwargs): 
    print(len(args) + len(kwargs)) 
+0

Я даю +1 этому anwer, потому что подсчет аргументов внутри функции имеет смысл только тогда, когда их количество варьируется. – VPfB

0

можно также изменить вход для функции к списку, так, чтобы иметь функцию:

a(your_list) 

затем, чтобы знать, сколько аргументов были переданы в функцию, вы можете просто сделать:

print len(your_list) 

Однако это означает, что вы меняете тип ввода для своей функции, из многих входных переменных только в один список (который может иметь переменное количество элементов).

Смежные вопросы