Skip to content

Argomenti predefiniti in Python

Python

In Python, puoi impostare valori predefiniti per gli argomenti quando definisci le funzioni. Il valore predefinito verrà utilizzato se si omette l’argomento quando si chiama la funzione.

In questo articolo vengono descritti i seguenti contenuti.

  • Imposta i valori degli argomenti predefiniti
  • Vincoli di posizione degli argomenti predefiniti
  • Nota sull’utilizzo di elenchi e dizionari come valori predefiniti

Vedere il seguente articolo per le nozioni di base sulle funzioni in Python.

Imposta i valori degli argomenti predefiniti

Se si utilizza nome_argomento=valore_predefinito nella definizione della funzione, il valore predefinito verrà quando l’argomento corrispondente viene omesso.

def func_default(arg1, arg2='default_x', arg3='default_y'):
    print(arg1)
    print(arg2)
    print(arg3)

func_default('a')
# a
# default_x
# default_y

func_default('a', 'b')
# a
# b
# default_y

func_default('a', arg3='c')
# a
# default_x
# c

Vincoli di posizione degli argomenti predefiniti

Alla definizione della funzione, l’inserimento di un argomento prima di un argomento normale (= senza argomento un valore predefinito) causa SyntaxError.

# def func_default_error(arg2='default_a', arg3='default_b', arg1):
#     print(arg1)
#     print(arg2)

# SyntaxError: non-default argument follows default argument

Nota sull’utilizzo di elenchi e dizionari come valori predefiniti

Se un oggetto mutabile come un elenco o un dizionario viene specificato come valore predefinito, l’oggetto viene creato alla definizione della funzione e lo stesso oggetto viene quando utilizzatore la funzione viene chiamata con l’argomento corrispondente omesso.

I valori dei parametri predefiniti vengono valutati da sinistra a destra quando viene eseguita la definizione della funzione. Ciò significa che l’espressione viene valutata una volta, quando viene definita la funzione, e che viene utilizzato lo stesso valore “precalcolato” per ogni chiamata.
8. Dichiarazioni composte – Definizioni di funzioni — Documentazione Python 3.7.4rc1

Ad esempio, se si definisce pertanto una funzione che aggiunge un elemento a un elenco oa un dizionario come argomento predefinito e si omette l’argomento e lo si richiama più volte, l’elemento verrà aggiunto allo stesso oggetto.

Esempio per un elenco:

def func_default_list(l=[0, 1, 2], v=3):
    l.append(v)
    print(l)

func_default_list([0, 0, 0], 100)
# [0, 0, 0, 100]

func_default_list()
# [0, 1, 2, 3]

func_default_list()
# [0, 1, 2, 3, 3]

func_default_list()
# [0, 1, 2, 3, 3, 3]

Esempio per un dizionario:

def func_default_dict(d={'default': 0}, k='new', v=100):
    d[k] = v
    print(d)

func_default_dict()
# {'default': 0, 'new': 100}

func_default_dict(k='new2', v=200)
# {'default': 0, 'new': 100, 'new2': 200}

Nessuno Utilizzare per creare un nuovo oggetto se l’argomento viene omesso. Un nuovo oggetto viene creato ogni volta che viene chiamata la funzione.

def func_default_list_none(l=None, v=3):
    if l is None:
        l = [0, 1, 2]
    l.append(v)
    print(l)

func_default_list_none()
# [0, 1, 2, 3]

func_default_list_none()
# [0, 1, 2, 3]