Argomenti Solo Posizionali

Continuando a esplorare Python, ti imbatterai nel concetto di argomenti delle funzioni. In Python, ci sono diversi modi per passare argomenti a una funzione. Possiamo avere argomenti di default, argomenti per parola chiave e argomenti posizionali. Ma c'è un tipo specifico di argomento che può essere fornito solo per posizione e non per parola chiave, noto come argomenti solo posizionali.

A partire da Python 3.8, esiste una sintassi speciale / nelle definizioni di funzione per indicare che alcuni argomenti sono solo posizionali. Gli argomenti solo posizionali appaiono prima di un / nella definizione della funzione.

Considera questa funzione che somma tre numeri:

def add_numbers(a, b, c):
    return a + b + c

Possiamo chiamare questa funzione fornendo gli argomenti nell'ordine in cui sono definiti, cioè per posizione:

print(add_numbers(10, 20, 30))
# outputs: 60

E possiamo anche chiamarla usando i nomi degli argomenti, cioè per parola chiave:

print(add_numbers(a=10, b=20, c=30))
# outputs: 60

Ma cosa succede se vogliamo assicurarci che alcuni argomenti siano sempre forniti in un ordine specifico? È qui che entrano in gioco gli argomenti solo posizionali. Modifichiamo la funzione add_numbers per rendere a e b solo posizionali:

def add_numbers(a, b, /, c):
    return a + b + c

Ora possiamo ancora chiamare questa funzione con argomenti per posizione:

print(add_numbers(10, 20, 30))         # 60
print(add_numbers(a=10, b=20, c=30))   # TypeError
print(add_numbers(10, 20, c=30))       # 60

Tuttavia, se proviamo a chiamarla con gli argomenti solo posizionali come argomenti per parola chiave, otterremo un TypeError. In questo caso, dobbiamo fornire a e b per posizione. L'argomento c può essere fornito sia per posizione che per parola chiave.

Quindi, la sintassi per gli argomenti solo posizionali è:

  1. Gli argomenti solo posizionali vengono prima di un / nella definizione della funzione.

  2. Se / è presente nella definizione della funzione, gli argomenti prima di esso sono solo posizionali.

  3. Gli argomenti solo posizionali non possono essere passati per parola chiave.

  4. Gli argomenti dopo / possono essere passati per posizione o per parola chiave.

Esistono funzioni integrate in Python che hanno argomenti solo posizionali?

Sì, molte funzioni integrate di Python hanno argomenti solo posizionali. Ad esempio, la funzione abs() è un buon esempio:

help(abs)
# Help on built-in function abs in module builtins:
# abs(x, /)
#     Return the absolute value of the argument.

abs(-6)    # 6
abs(x=-6)  # TypeError: abs() takes no keyword arguments

Il parametro x in abs è un argomento solo posizionale e quando proviamo a passarlo alla chiamata della funzione come argomento per parola chiave, il programma genera un TypeError.

To check your solution you need to sign in

Sign in to continue

Sign in to your account

By continuing, you agree to our Terms of Service and Privacy Policy.