Vì python 3.8 chỉ giới thiệu các đối số vị trí, bài đăng này cần được cập nhật.
Đối số vị trí, đối số từ khóa, đối số bắt buộc và đối số tùy chọn thường bị nhầm lẫn. Đối số vị trí KHÔNG PHẢI LÀ đối số bắt buộc. và các đối số từ khóa KHÔNG PHẢI LÀ đối số tùy chọn.
Đối số vị trí là các đối số có thể được gọi theo vị trí của chúng trong định nghĩa hàm.
Đối số từ khóa là đối số có thể được gọi bằng tên của chúng.
Các đối số bắt buộc là các đối số phải được truyền cho hàm.
Đối số tùy chọn là đối số không thể được truyền cho hàm. Trong Python, các đối số tùy chọn là các đối số có giá trị mặc định .
Đối số vị trí là tùy chọn (python 3.8)
def f(a=2, /):
pass
f()
f(1)
f(a=1)
Đối số vị trí là bắt buộc (python 3.8)
def f(a, /):
pass
f()
f(1)
f(a=1)
Đối số từ khóa là tùy chọn
def f(*, a=1):
pass
f()
f(1)
f(a=1)
đối số từ khóa là bắt buộc
def f(*, a)
pass
f() # Error, argument required
f(1) # Error, keyword only arguments
f(a=1) # Allowed, it's a keyword argument
Đối số vị trí và từ khóa là tùy chọn
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
Đối số vị trí và từ khóa là bắt buộc
def f(a):
pass
f()
f(1)
f(a=1)
def f(*, a, /):
pass
Kết luận, một đối số có thể là tùy chọn hoặc bắt buộc không đồng thời cả hai . Nó cũng có thể là vị trí, từ khóa hoặc cả hai cùng một lúc .
Python 3.8 đã giới thiệu các tham số chỉ vị trí .
def f(positional_argument, /, positional_or_keyword_argument, *, keyword_argument):
pass