2015-10-12 12 views
7

Jestem nowy w Pythonie i chcę wiedzieć, czy istnieje prosty sposób na uzyskanie ilości przekazanych parametrów w funkcji Pythona.Sprawdź liczbę parametrów przekazanych w funkcji Python

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

Możliwy duplikat [Uzyskiwanie listy nazw parametrów w funkcji Pythona] (http://stackoverflow.com/questions/582056/getting-list-of-parameter-names-inside-python-function) – TigerhawkT3

+0

Inna możliwość [tutaj ] (http://stackoverflow.com/questions/218616/getting-method-parameter-names-in-python). – TigerhawkT3

+0

Mogę równie dobrze powiedzieć, że jest to [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – TigerhawkT3

Odpowiedz

4

Można to zrobić za pomocą miejscowych()

Ważne jest, aby pamiętać, że należy to zrobić jak ostatecznie swój pierwszy krok w swojej metodzie. Jeśli wprowadzisz nową zmienną w swojej metodzie, zmienisz wyniki. Więc upewnij się, wykonaj to w ten sposób:

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

Jeśli tak to:

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

byłoby skończyć się coraz 4, który nie byłby odpowiedni do Twoich oczekiwanych rezultatów.

Dokumentacja locals()

+1

Warto wspomnieć, że musisz to zrobić, zanim wykonasz jakieś przypisanie funkcji, aby działało. – Marius

+0

Dzięki @Marius, dobry telefon. Zmieniłem go, daj mi znać, co myślisz. – idjaw

+1

Dzięki, faktycznie użyję na początku funkcji. – JasmineOT

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

Daje +1 do tego anwer, ponieważ argument liczenia wewnątrz funkcji ma sens tylko wtedy, gdy istnieje zmienna ich ilość. – VPfB

0

można również zmienić wejście do swojej funkcji do listy, tak aby mieć funkcję:

a(your_list) 

wtedy wiedzieć, ile argumenty zostały przekazane do funkcję, można po prostu zrobić:

print len(your_list) 

Jednak oznacza to, że zmieniasz typ wejścia dla swojej funkcji, z wielu zmiennych wejściowych na tylko jedną, listę (która może mieć zmienną liczbę elementów).

Powiązane problemy