Tôi đã trải qua một vài phần đầu tiên trong PEP 3107, nhưng tôi vẫn không nhận được những gì họ làm tốt cho ngôn ngữ. Dường như với tôi rằng bạn có thể thêm siêu dữ liệu vào các chức năng bằng cách sử dụng trang trí. ví dụ.Chú thích hàm Python là gì?
def returns(return_type):
f.return_type = return_type # <- adding metadata here
return f
@returns(Foo)
def make_foo(): ...
Bạn có thể thêm siêu dữ liệu để lập luận quá, và nó có thể trông khá nếu bạn tận dụng lợi thế của các đối số mặc định, như vậy:
import inspect
def defaults_are_actually_metadata(f):
names, args_name, kwargs_name, defaults = inspect.getfuncspec(f)
f.parameter_metadata = dict(zip(names[-len(defaults):], defaults))
f.__defaults__ =()
return f
@defaults_are_actually_metadata
def haul(load="Stuff to be carried.",
speed_mph="How fast to move the load (in miles per hour)."): ...
Ít nhất ấn tượng ban đầu của tôi là chú thích là không cần thiết: trang trí có thể làm mọi thứ mà chú thích có thể (và nhiều hơn nữa). Tại sao các chú thích lại tốt hơn các trình trang trí khi nói đến việc thêm siêu dữ liệu vào các hàm?
Hiện tại, chú thích là loại thử nghiệm và loại công việc đang được tiến hành. Thực ra, có một chuỗi gần đây trong [danh sách gửi thư python-ideas] (http: //mail.python) .org/pipermail/python-ideas/2012-December/thread.html) về chủ đề có thể hữu ích –
@JohnY Tôi muốn đánh dấu câu trả lời là "đúng", nhưng nó không phải là câu trả lời "chính thức"! – allyourcode