Barra (/) indica que todos os argumentos anteriores a ele são apenas argumentos posicionais. O recurso de argumentos apenas posicionais foi adicionado no python 3.8 após a aceitação do PEP 570 . Inicialmente, essa notação foi definida no PEP 457 - Notação para notação para parâmetros somente posicionais
Os parâmetros na definição da função anterior à barra externa (/) são apenas posicionais e os parâmetros seguidos pela barra (/) podem ser de qualquer tipo, conforme a sintaxe. Onde os argumentos são mapeados para parâmetros posicionais apenas com base em sua posição ao chamar uma função. A passagem de parâmetros apenas de posição por palavras-chave (nome) é inválida.
Vamos dar o seguinte exemplo
def foo(a, b, / , x, y):
print("positional ", a, b)
print("positional or keyword", x, y)
Aqui, nos parâmetros de definição de função acima, a e b são apenas posicionais, enquanto x ou y podem ser posicionais ou de palavra-chave.
As chamadas de função a seguir são válidas
foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")
Porém, a chamada de função a seguir não é válida, o que gera uma exceção TypeError, já que a, b não são passados como argumentos posicionais, e sim como palavra-chave
foo(a=1.45, b=3.14, x=1, y=4)
TypeError: foo () obteve alguns argumentos somente posicionais passados como argumentos de palavra-chave: 'a, b'
Muitas funções embutidas em python aceitam apenas argumentos posicionais, onde passar argumentos por palavra-chave não faz sentido. Por exemplo, a função interna len aceita apenas um argumento posicional (apenas). Quando a chamada len como len (obj = "olá mundo") prejudica a legibilidade, consulte a ajuda (len).
>>> help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.
Os parâmetros apenas posicionais facilitam a manutenção das funções subjacentes da c / biblioteca. Ele permite que nomes de parâmetros apenas de parâmetros posicionais sejam alterados no futuro sem risco de quebrar o código do cliente que usa API
Por último, mas não menos importante, apenas parâmetros posicionais nos permitem usar seus nomes para serem usados em argumentos de palavras-chave de comprimento variável. Veja o exemplo a seguir
>>> 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}
Parâmetros apenas posicionais são melhor explicados aqui em Tipos de argumentos de função em python: Parâmetros apenas posicionais
A sintaxe dos parâmetros apenas de posição foi adicionada oficialmente ao python3.8. Caixa que há de novo python3.8 - apenas argumentos posicionais
Relacionados com PEP: PEP 570 - Parâmetros somente de posição do Python
/
token, porque "é a operação inversa de*
" shows, que o Python é um pouco louco. É um tipo de sinestesia.