Нахил нахилу (/) вказує, що всі аргументи до нього є лише позиційним аргументом. Функція аргументів позиції була додана в python 3.8 після прийняття PEP 570 . Спочатку ця позначення була визначена в PEP 457 - Позначення для нотації лише для позиційних параметрів
Параметри у визначенні функції до нахилу Foraward (/) є лише позиційними, а параметри, слідом за косою косою (/), можуть мати будь-який вид відповідно до синтаксису. Якщо аргументи відображаються на позиційні лише параметри виключно на основі їх позиції при виклику функції. Передача параметрів лише позицій за ключовими словами (ім'ям) недійсна.
Візьмемо наступний приклад
def foo(a, b, / , x, y):
print("positional ", a, b)
print("positional or keyword", x, y)
Тут у наведених вище параметрах визначення функцій a і b є лише позиційними, тоді як x або y можуть бути або позиційними, або ключовими словами.
Наступні виклики функцій дійсні
foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")
Але наступний виклик функції недійсний, що викликає виняток TypeError, оскільки a, b не передаються як позиційні аргументи, а передаються як ключове слово
foo(a=1.45, b=3.14, x=1, y=4)
TypeError: foo () отримав деякі аргументи лише позиції як аргументи ключових слів: 'a, b'
Багато вбудованих функцій у python приймають лише позиційні аргументи, де передача аргументів за ключовим словом не має сенсу. Наприклад, вбудована функція len приймає лише один позиційний (лише) аргумент. Якщо виклик len як len (obj = "привіт світ") погіршує читабельність, перевірте довідку (len).
>>> help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.
Позиційні лише параметри полегшують основні функції c / library легко підтримувати. Це дозволяє змінювати імена параметрів лише позиційних параметрів у майбутньому без ризику порушення коду клієнта, що використовує API
І останнє, але не менш важливе, лише позиційні параметри дозволяють нам використовувати їхні імена для аргументів ключових слів різної довжини. Перевірте наступний приклад
>>> 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}
Позиційні лише параметри краще Пояснено тут у розділі Типи аргументів функції в python: Позиційні лише параметри
Синтаксис лише позиційних параметрів офіційно додано до python3.8. Оформити замовлення Що нового python3.8 - позиційні тільки аргументи
Пов’язані з PEP: PEP 570 - Параметри, що відповідають лише позиції Python
/
жетону, тому що "це зворотна операція*
" показує, що Python просто трохи божевільний. Це свого роду синестезія.