Maybe the PEP should just say it's for "annotating variables", and it would mention "primarily for the purpose of types"?
-- Ryan [ERROR]: Your autotools build scripts are 200 lines longer than your program. Something’s wrong. http://kirbyfan64.github.io/ On Sep 5, 2016 10:27 AM, "Mark Shannon" <m...@hotpy.org> wrote: > Hi, > > PEP 526 states that "This PEP aims at adding syntax to Python for > annotating the types of variables" and Guido seems quite insistent that the > declarations are for the types of variables. > > However, I get the impression that most (all) of the authors and > proponents of PEP 526 are quite keen to emphasise that the PEP in no way > limits type checkers from doing what they want. > > This is rather contradictory. The behaviour of a typechecker is defined by > the typesystem that it implements. Whether a type annotation determines the > type of a variable or an expression alters changes what typesystems are > feasible. So, stating that annotations define the type of variables *does* > limit what a typechecker can or cannot do. > > Unless of course, others may have a different idea of what the "type of a > variable" means. > To me, it means it means that for all assignments `var = expr` > the type of `expr` must be a subtype of the variable, > and for all uses of var, the type of the use is the same as the type of > the variable. > > In this example: > > def bar()->Optional[int]: ... > > def foo()->int: > x:Optional[int] = bar() > if x is None: > return -1 > return x > > According to PEP 526 the annotation `x:Optional[int]` > means that the *variable* `x` has the type `Optional[int]`. > So what is the type of `x` in `return x`? > If it is `Optional[int]`, then a type checker is obliged to reject this > code. If it is `int` then what does "type of a variable" actually mean, > and why aren't the other uses of `x` int as well? > > Cheers, > Mark. > _______________________________________________ > 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/rymg19% > 40gmail.com >
_______________________________________________ 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