ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Espressioni | Comandi | Funzioni | Moduli | Classi | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Corso Python
Python: le funzioni
Funzioni
Passaggio Parametri
Parametri
argomenti "modello"
unpacking di parametri
Lambda
Ordinamento


<<< Parametri >>>

Vediamo qualcosa in più riguardo a parametri delle funzioni.

Ricordo che per definire una funzione occorre specificare una serie di parametri tra parentesi. I valori vengono assegnate parametri a secondo del loro ordine, e vengono pertanto detti parametri posizionali.

I parametri possono eventualmente prendere un valore predefinito come nel seguente esempio:

def  f(x, y=1, z=2):
	return x+y+z

In questo modo, se non vengono specificati nella chiamata, i parametri prendono il loro valore predefinito: ecco l'esempio.

>>> f(1)
4

Non abbiamo specificato il secondo e il terzo valore, e allora viene preso solo il valore predefinito.

Alcune osservazioni importanti. Innanzitutto è possibile specificare i parametri assegnando un valore al nome direttamente nella chiamata. Questo tecnica si chiama "keyword argument", ovvero gli argomenti della chiamata vengono specificati utilizzando il nome del parametro. Per esempio:

>>> f(x=1)
4

Posso specificare i parametri obbligatori per posizione, mentre quelli con valore predefinito per nome. Per esempio:

>>> f(1,z=4)
6

Se uso i nomi, posso specificare i parametri in qualunque ordine.

>>> f(z=4, x=2)

Naturalmente non tutte le combinazioni sono legali. Devono essere specificati sempre i parametri senza valore predefinito.

>>> f(y=2)
Traceback (most recent call last):
  File "<input>", line 1, in ?
TypeError: f() takes at least 1 non-keyword argument (0 given)

In questo caso a x non viene assegnato alcun valore, e quindi sia ha un errore.

Un'altra restrizione è che devono essere specificati prima i valori senza nome e poi i valori con il nome:

>>> f(y=2, 0)
SyntaxError: non-keyword arg after keyword arg

Infine se a un parametro ho assegnato un valore per posizione, non posso assegnarlo con il nome:

>>> f(2, x=2)
Traceback (most recent call last):
  File "<input>", line 1, in ?
TypeError: f() got multiple values for keyword argument 'x'
ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com