A Byte of Python

Argomenti a parola chiave

Poniamo il caso di avere alcune funzioni con molti parametri e la necessità di dover specificare solo alcuni di essi: in tal caso dovremmo fornire i valori di tali parametri attraverso il loro nome. Ci si riferisce a questo tipo di specificazione come agli argomenti a parola chiave, indicando con il termine 'parola chiave' una chiamata a funzione nella forma 'parolachiave = valore'.

I vantaggi nel chiamare una funzione con argomenti a parola chiave sono essenzialmente due: il primo è che l'approccio stesso alle funzioni è semplificato, dal momento che il programmatore non deve preoccuparsi dell'ordine con cui compaiono gli argomenti; il secondo è che possiamo assegnare dei valori solo ai parametri che vogliamo, dato che per gli altri si possono sfruttare quelli di default.

Usare argomenti a parola chiave

Esempio 7.6. Usare argomenti a parola chiave

				
#!/usr/bin/python
# Filename: func_key.py

def func(a, b=5, c=10):
	print 'a is', a, 'and b is', b, 'and c is', c

func(3, 7)
func(25, c=24)
func(c=50, a=100)
				
				

Output

				
$ python func_key.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
				
				

Funzionamento

La funzione chiamata func ha un primo parametro senza valore di default, seguita da altri due parametri con valore di default.

Nella prima applicazione, func(3, 7), al parametro a viene assegnato il valore 3, al parametro b viene assegnato il valore 5 e a c si assegna di default il valore 10.

Nella seconda applicazione func(25, c=24), alla variabile a si assegna il valore di 25 a causa del posizionamento dell'argomento. Quindi al parametro c viene assegnato il valore di 24 per il passaggio della parola chiave. La variabile b assume il valore di default 5.

Nella terza applicazione func(c=50, a=100), si usano esclusivamente argomenti a parola chiave per specificarne i valori. Si noti che viene specificato il valore del parametro c prima di quello del parametro a, sebbene nella definizione della funzione a sia definita prima di c: nessun problema!