Tutorial sul Python - Argomenti sulla funzione

  1. Argomenti della funzione Python
  2. Tipi di argomenti della funzione Python

In questa sezione, si imparano gli argomenti della funzione Python e i suoi diversi tipi, come gli argomenti di default, gli argomenti delle parole chiave e gli argomenti arbitrari.

Argomenti della funzione Python

Gli argomenti della funzione sono i valori sui quali vengono eseguite le operazioni all’interno della funzione.

Quando si definisce una funzione con un numero di argomenti specificato, si deve chiamare questa particolare funzione passando quel numero di argomenti specificato.

Se si passa più o meno argomenti di quanto specificato nella definizione della funzione, si otterrà un TypeError.

Considerate il codice qui sotto:

def language(p, n):
    """Function to print a message"""
    print("Programming language",n,"is:", p)
language('Python', 1)
language('Java', 2)
Programming language 1 is: Python
Programming language 2 is: Java

La funzione language ha due argomenti. E se si chiama la funzione con un numero di argomenti diverso, si otterrà un errore come segue:

>>> language('Python')

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    language('Python')
TypeError: language() takes exactly 2 arguments (1 given)

>>> language(2, 'Python', 'Java')

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    language(2, 'Python', 'Java')
TypeError: language() takes exactly 2 arguments (3 given)

Tipi di argomenti della funzione Python

La funzione precedente ha un numero fisso di argomenti. E la funzione potrebbe anche avere argomenti variabili.

Ci sono tre modi diversi per passare argomenti variabili ad una funzione. Ora esaminiamoli tutti.

Argomenti di default della funzione Python

In una funzione, gli argomenti possono avere valori di default che sono assegnati nella definizione della funzione. Se gli argomenti hanno valori di default, allora è optional passare valori per quegli argomenti:

Questo è dimostrato nell’esempio seguente:

def language(p = 'C++', n = 3):
    """Function to print a message"""
    print("Programming language",n,"is:", p)
language()
Programming language 3 is: C++

Si può vedere qui che non viene passato nessun argomento, ma il programma funziona ancora bene; perché sono forniti i valori di default per gli argomenti. Se si passano valori per uno qualsiasi degli argomenti, il valore predefinito sarà sovrascritto.

Argomenti delle parole chiave della funzione Python

Normalmente si passano più argomenti nella stessa sequenza definita nella definizione della funzione. Ma se si utilizzano argomenti di parole chiave, è possibile modificare la posizione degli argomenti.

def language(p, n):
    """Function to print a message"""
    print("Programming language",n,"is:", p)
language(p = 'C++', n = 3)
Programming language 3 is: C++

Potete anche cambiare la posizione degli argomenti se usate gli argomenti delle parole chiave per assegnare valori esplicitamente agli argomenti specifici.

def language(p, n):
    """Function to print a message"""
    print("Programming language",n,"is:", p)
language(n = 3, p = 'C++')
Programming language 3 is: C++

Argomenti arbitrari della funzione Python

Gli argomenti arbitrari sono utilizzati quando non si sa in anticipo quanti argomenti devono essere passati.

Una funzione arbitraria è indicata da un asterisco * prima del nome dell’argomento. Essa passa gli argomenti non scritti a chiave come tupla alla funzione.

def language(*args):
    """Demo function of arbitray arguments"""
    for i in args:
        print("Programming language:", i)

language("Java", "C++", "R", "Kotlin")
Programming language: Java
Programming language: C++
Programming language: R
Programming language: Kotlin

La funzione viene chiamata passando più argomenti. Questi argomenti vengono convertiti in una tupla prima che la funzione venga effettivamente chiamata.

Il doppio asterisco **kwargs è l’idioma per passare gli argomenti di parole chiave arbitrarie alla funzione. Per esempio,

def language(**kwargs):
    """Demo funciton of arbitrary keyword arguments"""
    for a in kwargs:
        print(a, kwargs[a])
        
language(country="NL", code="+31")
country NL
code +31

Gli argomenti in questa parola chiave argomenti arbitrari sono passati come dizionario i cui keys sono parole chiave e values sono valori corrispondenti. Come nell’esempio precedente, gli argomenti passati sono convertiti in un dizionario {'country':"NL", 'code':"+31"}.