2015-10-12 12 views
7

Sono nuovo in Python e voglio sapere se c'è un modo semplice per ottenere la quantità di parametri passati nella funzione Python.Controlla il numero di parametri passati in funzione Python

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

Possibile duplicato di [Ottenere lista dei nomi dei parametri all'interno della funzione python] (http://stackoverflow.com/questions/582056/getting-list-of-parameter-names-inside-python-function) – TigerhawkT3

+0

Un'altra possibilità [qui ] (http://stackoverflow.com/questions/218616/getting-method-parameter-names-in-python). – TigerhawkT3

+0

E potrei anche dire che questo è un [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – TigerhawkT3

risposta

4

È possibile farlo utilizzando i locali()

E 'importante notare, che questo dovrebbe essere fatto come in ultima analisi, il primo passo nel metodo. Se introduci una nuova variabile nel tuo metodo, cambierai i risultati. Quindi assicuratevi di seguire in questo modo:

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

Se avete fatto queste cose:

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

Si potrebbe finire per ottenere 4, che non sarebbe giusto per i risultati attesi.

documentazione sul locals()

+1

Probabilmente vale la pena menzionare che devi farlo prima di aver eseguito qualsiasi compito all'interno della funzione affinché funzioni. – Marius

+0

Grazie a @ Mario, buona telefonata. L'ho cambiato, fammi sapere cosa ne pensi. – idjaw

+1

Grazie, in realtà userò all'inizio della funzione. – JasmineOT

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

Sto dando +1 a questo anwer, perché il conteggio degli argomenti all'interno di una funzione ha senso solo quando ci sono quantità variabili di essi. – VPfB

0

si potrebbe anche cambiare l'ingresso per la funzione a un elenco, in modo da avere una funzione:

a(your_list) 

quindi sapere quanti argomenti sono stati passati al la funzione, si potrebbe semplicemente fare:

print len(your_list) 

Tuttavia, ciò significa che si modifica il tipo di input per la propria funzione, da molte variabili di input a una sola, l'elenco (che può avere un numero variabile di elementi).

Problemi correlati