Ukośnik (/) wskazuje, że wszystkie argumenty przed nim są argumentami wyłącznie pozycyjnymi. Funkcja argumentów tylko pozycyjnych została dodana w Pythonie 3.8 po zaakceptowaniu PEP 570 . Początkowo notacja ta została zdefiniowana w PEP 457 - Notacja dla notacji dla parametrów tylko pozycyjnych
Parametry w definicji funkcji przed ukośnikiem Foraward (/) są tylko pozycyjne, a parametry, po których następuje ukośnik (/), mogą być dowolnego rodzaju zgodnie ze składnią. Gdzie argumenty są mapowane tylko na parametry pozycyjne wyłącznie na podstawie ich pozycji podczas wywoływania funkcji. Przekazywanie parametrów tylko pozycyjnych przez słowa kluczowe (nazwę) jest nieprawidłowe.
Weźmy następujący przykład
def foo(a, b, / , x, y):
print("positional ", a, b)
print("positional or keyword", x, y)
Tutaj w powyższej definicji funkcji parametry a i b są tylko pozycyjne, podczas gdy x lub y mogą być pozycyjne lub kluczowe.
Następujące wywołania funkcji są prawidłowe
foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")
Ale następujące wywołanie funkcji nie jest prawidłowe, co powoduje wyjątek TypeError, ponieważ a, b nie są przekazywane jako argumenty pozycyjne zamiast tego przekazywane jako słowo kluczowe
foo(a=1.45, b=3.14, x=1, y=4)
TypeError: foo () otrzymało kilka argumentów tylko pozycyjnych przekazanych jako argumenty słów kluczowych: „a, b”
Wiele funkcji wbudowanych w Pythonie akceptuje tylko argumenty pozycyjne, w przypadku których przekazywanie argumentów przez słowo kluczowe nie ma sensu. Na przykład funkcja wbudowana len akceptuje tylko jeden argument pozycyjny (tylko). Gdy wywołanie len jako len (obj = "hello world") osłabia czytelność, sprawdź help (len).
>>> help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.
Parametry tylko pozycyjne sprawiają, że podstawowe funkcje biblioteki c / są łatwe w utrzymaniu. Pozwala to na zmianę nazw parametrów parametrów pozycyjnych w przyszłości bez ryzyka złamania kodu klienta używającego API
Wreszcie, parametry tylko pozycyjne pozwalają nam używać ich nazw w argumentach słów kluczowych o zmiennej długości. Sprawdź poniższy przykład
>>> 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}
Parametry tylko pozycyjne są lepiej wyjaśnione tutaj w Typy argumentów funkcji w pythonie: Parametry tylko pozycyjne
Składnia parametrów tylko pozycyjnych została oficjalnie dodana do pythona3.8. Zamówienie nowości python3.8 - pozycyjne tylko argumenty
Powiązane z PEP: PEP 570 - parametry tylko pozycyjne w języku Python
/
tokena, ponieważ „to operacja odwrotna do*
” pokazuje, że Python jest trochę szalony. To rodzaj synestezji.