On 02/09/16 20:33, Guido van Rossum wrote:
On Fri, Sep 2, 2016 at 10:47 AM, Steve Dower <steve.do...@python.org> wrote:
"I'm not seeing what distinction you think you are making here. What
distinction do you see between:
x: int = func(value)
and
x = func(value) # type: int"
Not sure whether I agree with Mark on this particular point, but the
difference I see here is that the first describes what types x may ever
contain, while the latter describes what type of being assigned to x right
here. So one is a variable annotation while the other is an expression
annotation.
But that's not what type comments mean! They don't annotate the
expression. They annotate the variable. The text in PEP 484 that
introduces them is clear about this (it never mentions expressions,
only variables).
In PEP 484, the section on type comments says:
(Quoting verbatim)
"""
No first-class syntax support for explicitly marking variables as being
of a specific type is added by this PEP. To help with type inference in
complex cases, a comment of the following format may be used...
"""
Some mentions of the type of a variable are made in other places in the
PEP, but those were all added *after* I had approved the PEP.
In other words PEP 484 specifically states that annotations are to help
with type inference. As defined in PEP 526, I think that type
annotations become a hindrance to type inference.
Cheers,
Mark.
Personally, I prefer expression annotations over variable annotations, as
there are many other languages I'd prefer if variable have fixed types (e.g.
C++, where I actually enjoy doing horrible things with implicit casting ;)
).
Variable annotations appear to be inherently restrictive, so either we need
serious clarification as to why they are not, or they actually are and we
ought to be more sure that it's the direction we want the language to go.
At runtime the variable annotations are ignored. And a type checker
will only ask for them when it cannot infer the type. So I think we'll
be fine.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com