[Python-Dev] Do PEP 526 type declarations define the types of variables or not?
Mark Shannon
mark at hotpy.org
Tue Sep 6 11:25:48 EDT 2016
More information about the Python-Dev mailing list
Tue Sep 6 11:25:48 EDT 2016
- Previous message (by thread): [Python-Dev] Do PEP 526 type declarations define the types of variables or not?
- Next message (by thread): [Python-Dev] Do PEP 526 type declarations define the types of variables or not?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 05/09/16 23:16, Greg Ewing wrote: > Mark Shannon wrote: > >> 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. > > I think it means that, at any given point in time, the > value of the variable is of the type of the variable or > some subtype thereof. That interpretation leaves the > type checker free to make more precise inferences if > it can. For example, in... How does that differ from annotating the type of the expression? > >> def foo()->int: >> x:Optional[int] = bar() >> if x is None: >> return -1 >> return x > > ...the type checker could notice that, on the branch > containing 'return x', the value of x must be of type > int, so the code is okay. > The issue is not whether the checker can tell that the type of the *expression* is int, but whether it is forced to use the type of the *variable*. The current wording of PEP 526 strongly implies the latter. Cheers, Mark.
- Previous message (by thread): [Python-Dev] Do PEP 526 type declarations define the types of variables or not?
- Next message (by thread): [Python-Dev] Do PEP 526 type declarations define the types of variables or not?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list