On Sat, Sep 3, 2016 at 8:28 AM, Stephen J. Turnbull <[email protected]> wrote: > Guido van Rossum writes: > > > But that's not what type comments mean! They don't annotate the > > expression. They annotate the variable. > > In PEP 484. But syntactically, AFAICS in an initialization that's a > distinction without a difference. It would be perfectly possible to > write a checker that allows > > if cond: > x: str = "a string, what else?" > else: > x: int = 1 > > and infers the union, and even infers the types from the expressions > in > > if cond: > x = "a string, what else?" > else: > x = 1 > > Once you have that, then the only things that are really being typed > are the initializer expressions. > > I don't understand why some people seem to think that is a *good* > typechecker (if that's it's normal mode of operation). But as a tool > to identify the types that untyped (or ambiguously-typed) code > actually uses, review them, and help produce a precisely typed > version, it seems perfectly plausible to me.
That's is why we're not restricting this syntactically. I've seen a fair amount of untyped code that reuses the same variable name (in the same scope, often in unit tests), but usually it was serially, e.g. target = 42 assert fooi(target) == '42' target = 3.14 assert foof(target) == '3.14' target = 'x' assert foos(target) == "'x'" -- --Guido van Rossum (python.org/~guido) _______________________________________________ Python-ideas mailing list [email protected] https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
