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.
  1. Se / è presente nella definizione della funzione, gli argomenti prima di esso sono solo posizionali.
  1. Gli argomenti solo posizionali non possono essere passati per parola chiave.
  1. 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