Forward Slash (/) indica che tutti gli argomenti precedenti sono solo argomenti posizionali. La funzione degli argomenti solo posizionali è stata aggiunta in Python 3.8 dopo l' accettazione di PEP 570 . Inizialmente questa notazione è stata definita in PEP 457 - Notazione per notazione per parametri solo posizionali
I parametri nella definizione della funzione precedente alla barra (/) sono posizionali e i parametri seguiti dalla barra (/) possono essere di qualsiasi tipo secondo la sintassi. Dove gli argomenti sono associati a parametri posizionali solo in base alla loro posizione al momento della chiamata di una funzione. Il passaggio di parametri solo posizionali per parole chiave (nome) non è valido.
Facciamo il seguente esempio
def foo(a, b, / , x, y):
print("positional ", a, b)
print("positional or keyword", x, y)
Qui nei parametri di definizione della funzione sopra a e b sono solo posizionali, mentre x o y possono essere posizionali o parole chiave.
Sono valide le seguenti chiamate di funzione
foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")
Tuttavia, la seguente chiamata di funzione non è valida e genera un'eccezione TypeError poiché a, b non vengono passati come argomenti posizionali invece passati come parola chiave
foo(a=1.45, b=3.14, x=1, y=4)
TypeError: foo () ha ottenuto alcuni argomenti solo posizionali passati come argomenti di parole chiave: 'a, b'
Molte funzioni integrate in Python accettano argomenti solo posizionali in cui non ha senso passare argomenti per parola chiave. Ad esempio la funzione incorporata len accetta solo un argomento posizionale (solo), dove chiamare len come len (obj = "ciao mondo") compromette la leggibilità, controlla aiuto (len).
>>> help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.
I parametri solo posizionali semplificano la manutenzione delle funzioni c / library sottostanti. Consente ai nomi dei parametri dei soli parametri posizionali di essere modificati in futuro senza il rischio di interrompere il codice client che utilizza l'API
Ultimo ma non meno importante, solo i parametri posizionali ci consentono di utilizzare i loro nomi per essere utilizzati in argomenti di parole chiave a lunghezza variabile. Controlla il seguente esempio
>>> def f(a, b, /, **kwargs):
... print(a, b, kwargs)
...
>>> f(10, 20, a=1, b=2, c=3) # a and b are used in two ways
10 20 {'a': 1, 'b': 2, 'c': 3}
I parametri solo posizionali sono meglio spiegati qui in Tipi di argomenti di funzioni in python: Parametri solo posizionali
La sintassi dei parametri solo posizionali è stata aggiunta ufficialmente a python3.8. Checkout cosa c'è di nuovo python3.8 - solo argomenti posizionali
Correlazione PEP: PEP 570 - Parametri solo posizionali Python
/
token, perché "è l'operazione inversa di*
" mostra che Python è solo un po 'pazzo. È una specie di sinestesia.