3.2. Argomenti opzionali ed argomenti con nome

Python permette agli argomenti delle funzioni di avere un valore predefinito; se la funzione è chiamata senza l'argomento, l'argomento prende il suo valore predefinito. Inoltre gli argomenti possono essere specificati in qualunque ordine usando gli argomenti con nome. Le stored procedure in SQL Server Transact/SQL possono farlo; se siete dei guru nella programmazione via script di SQL Server potete saltare questa parte.

Esempio 3.4. help, una funzione con due argomenti opzionali


def help(object, spacing=10, collapse=1):

spacing e collapse sono opzionali perché hanno un valore predefinito. object è richiesto perché non ha alcun valore predefinito. Se help viene chiamata con un solo argomento, spacing assumerà il valore 10 e collapse assumerà valore 1. Se help viene chiamata con due argomenti, collapse continuerà a valere 1.

Diciamo che volete specificare un valore per collapse, ma volete accettare il valore predefinito per spacing. Nella maggior parte dei linguaggi sareste sfortunati, perché dovreste chiamare la funzione con tre argomenti. Ma in Python gli argomenti possono essere specificati per nome, in qualsiasi ordine.

Esempio 3.5. Chiamate valide per help

help(odbchelper)                    1
help(odbchelper, 12)                2
help(odbchelper, collapse=0)        3
help(spacing=15, object=odbchelper) 4
1 Con un solo argomento, spacing prende il suo valore predefinito pari a 10 e collapse prende il suo valore predefinito che è 1.
2 Con due argomenti, collapse prende il suo valore predefinito che è 1.
3 Qui state nominando l'argomento collapse esplicitamente e specificando il suo valore. spacing continua ad avere il suo valore predefinito 10.
4 Anche gli argomenti richiesti (come object, che non ha un valore predefinito) possono essere nominati e gli argomenti con nome possono apparire in qualsiasi ordine.

Può sembrare estremamente forzato fino a che non realizzate che gli argomenti sono semplicemente un dizionario. Il meccanismo “normale”, di chiamata a funzione senza nomi di argomenti è solamente una scorciatoia in cui è Python ad abbinare i valori con i nomi degli argomenti, nell'ordine in cui sono stati specificati nella dichiarazione. Nella maggior parte dei casi, chiamerete le funzioni nel modo “normale”, ma avrete sempre a disposizione questa flessibilità aggiuntiva se ne avrete bisogno.

Nota
L'unica cosa che dovete fare per chiamare una funzione è specificare un valore (in qualche modo) per ogni argomento richiesto; il modo e l'ordine in cui lo fate è a vostra discrezione.

Ulteriori letture