Dấu gạch chéo (/) cho biết tất cả các đối số trước nó là đối số chỉ theo vị trí. Tính năng đối số chỉ vị trí đã được thêm vào python 3.8 sau khi PEP 570 được chấp nhận. Ban đầu ký hiệu này được định nghĩa trong PEP 457 - Ký hiệu cho ký hiệu chỉ tham số vị trí
Các tham số trong định nghĩa hàm trước dấu gạch chéo Foraward (/) chỉ là vị trí và các tham số theo sau dấu gạch chéo (/) có thể là bất kỳ loại nào theo cú pháp. Trong đó các đối số được ánh xạ tới các tham số chỉ theo vị trí chỉ dựa trên vị trí của chúng khi gọi hàm. Truyền tham số chỉ vị trí theo từ khóa (tên) là không hợp lệ.
Hãy lấy ví dụ sau
def foo(a, b, / , x, y):
print("positional ", a, b)
print("positional or keyword", x, y)
Ở đây trong các tham số định nghĩa hàm trên và a chỉ là vị trí, trong khi x hoặc y có thể là vị trí hoặc từ khóa.
Các cuộc gọi chức năng sau đây là hợp lệ
foo(40, 20, 99, 39)
foo(40, 3.14, "hello", y="world")
foo(1.45, 3.14, x="hello", y="world")
Nhưng, lệnh gọi hàm sau không hợp lệ, điều này làm tăng ngoại lệ TypeError vì a, b không được truyền dưới dạng đối số vị trí thay vì được chuyển dưới dạng từ khóa
foo(a=1.45, b=3.14, x=1, y=4)
TypeError: foo () có một số đối số chỉ vị trí được truyền dưới dạng đối số từ khóa: 'a, b'
Nhiều hàm được xây dựng trong python chỉ chấp nhận các đối số theo vị trí trong đó việc truyền các đối số theo từ khóa không có ý nghĩa. Ví dụ, hàm dựng sẵn len chỉ chấp nhận một đối số vị trí (chỉ), trong đó gọi len là len (obj = "hello world") làm suy yếu khả năng đọc, kiểm tra trợ giúp (len).
>>> help(len)
Help on built-in function len in module builtins:
len(obj, /)
Return the number of items in a container.
Các tham số chỉ vị trí làm cho các chức năng thư viện c / thư viện dễ bảo trì. Nó cho phép tên tham số của các tham số chỉ vị trí sẽ thay đổi trong tương lai mà không có nguy cơ phá vỡ mã máy khách sử dụng API
Cuối cùng nhưng không kém phần quan trọng, các tham số chỉ vị trí cho phép chúng ta sử dụng tên của chúng để được sử dụng trong các đối số từ khóa có độ dài thay đổi. Kiểm tra ví dụ sau
>>> 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}
Các tham số chỉ vị trí được giải thích tốt hơn ở đây tại Các loại đối số hàm trong python: Tham số chỉ vị trí
Cú pháp tham số chỉ vị trí đã chính thức được thêm vào python3.8. Kiểm tra python3.8 mới là gì - đối số chỉ theo vị trí
PEP liên quan: PEP 570 - Tham số chỉ vị trí của Python
/
mã thông báo, vì "đó là hoạt động nghịch đảo*
" cho thấy, Python chỉ là một chút điên rồ. Đó là một loại khớp thần kinh.