Оскільки python 3.8 представив лише позиційні аргументи, цей пост потребує оновлення.
Позиційні аргументи, аргументи ключових слів, необхідні аргументи та необов’язкові аргументи часто плутають. Позиційні аргументи НЕ ТАКІ ж, ЯКІ необхідні аргументи. та аргументи ключових слів НЕ ТАКІ ж ТАКІ, ЩО БУДУТЬ необов'язкові аргументи.
Позиційні аргументи - це аргументи, які можна викликати за їх положенням у визначенні функції.
Аргументи ключових слів - це аргументи, які можна назвати їх іменем.
Обов’язкові аргументи - це аргументи, які необхідно передати функції.
Необов’язкові аргументи - це аргументи, які не можна передавати функції. У python необов’язкові аргументи - це аргументи, які мають значення за замовчуванням .
Необов’язковий позиційний аргумент (python 3.8)
def f(a=2, /):
pass
f()
f(1)
f(a=1)
Необхідний позиційний аргумент (python 3.8)
def f(a, /):
pass
f()
f(1)
f(a=1)
Необов’язковий аргумент ключового слова
def f(*, a=1):
pass
f()
f(1)
f(a=1)
необхідний аргумент ключового слова
def f(*, a)
pass
f() # Error, argument required
f(1) # Error, keyword only arguments
f(a=1) # Allowed, it's a keyword argument
Позиційний аргумент та аргумент ключового слова, який не є обов’язковим
def f(a=1)
pass
f() # Allowed, argument is optional
f(1) # Allowed, it's a positional argument
f(a=1) # Allowed, it's a keyword argument
# In fact this function is the same as
def f(*, a=1, /):
pass
Необхідний позиційний аргумент та аргумент ключового слова
def f(a):
pass
f()
f(1)
f(a=1)
def f(*, a, /):
pass
Висновок, аргумент може бути необов’язковим або потрібним не обом одночасно . Він також може бути позиційним, ключовим словом або одночасно обом .
Python 3.8 представив лише позиційні параметри .
def f(positional_argument, /, positional_or_keyword_argument, *, keyword_argument):
pass