[Python-3000] PEP 3107 - Function Annotations (original) (raw)
Guido van Rossum guido at python.org
Thu Dec 28 02:31:55 CET 2006
- Previous message: [Python-3000] Lazy strings (was Re: Py3k release schedule worries)
- Next message: [Python-3000] PEP 3107 - Function Annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I just noticed that PEP 3107 has quietly been checked in. Thanks Collin and Tony!
After skimming it, I have one observation: the grammar in the PEP doesn't match that implemented by Tony's patch. The difference is only apparent for tuple-unpacking parameters (e.g. b and c in "def foo(a, (b, c), d): pass"). The PEP supports this syntax:
def foo((a, b): "something"): ...
while the patch supports this instead:
def foo((a: "something", b: "something_else")): ...
(I have to say that I like the patch version better. :-)
I also note that the PEP uses foo.signature.annotations to access the annotations dict, while the patch uses foo.func_annotations. This is reasonable since we don't have the signature API yet (it's PEP 362, but I don't know its status).
Finally, the PEP uses Number, Mapping and Sequence as example annotations. I'd rather not use those since they could incorrectly convey the notion that annotations imply type checking semantics, which thety don't (at least not without some kind of decorator).
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-3000] Lazy strings (was Re: Py3k release schedule worries)
- Next message: [Python-3000] PEP 3107 - Function Annotations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]