[Python-ideas] PEP 484 (Type Hints) -- first draft round

Steven D'Aprano steve at pearwood.info
Tue Jan 20 12:06:27 CET 2015


On Tue, Jan 20, 2015 at 07:59:40PM +1300, Greg Ewing wrote:
> Stephen Hansen wrote:
> >On Mon, Jan 19, 2015 at 10:22 PM, Greg Ewing 
> ><greg.ewing at canterbury.ac.nz <mailto:greg.ewing at canterbury.ac.nz>> wrote:
> >
> >      quack :: lambda float, int: AnimalSound
> >      def quack(volume, num_times):
> >         ...
> >
> >That's still verbose, its simply vertically verbose. We have decorators 
> >for adding information in the vertical space.
> >
> > Then you have decorators and
> >... whatever you call that line? What's the difference?
> 
> The difference is that the :: annotations would *not* be
> evaluated a run time. There's currently no way to get
> that with a decorator, or anything else in the language,
> short of abusing comments or string literals.
> Yet it's what you really want for static type checking.

Then I guess Python won't have static type checking.

I think Guido has been very clear that he has little interest at this 
stage (if ever) about introducing a Java/Pascal/Haskell style statically 
typed compiler to Python. I seem to recall he expressed considerable 
skepticism that such a thing was even practical, or useful even if it 
could be done. I recall Guido expressing doubts that Nuitka's approach 
of trying to optimize code statically at compile-time will ever beat 
Cython's and PyPy's JIT approaches. So anyone thinking that this is the 
first step to turning Python into Haskell is probably mistaken :-)
 
A type-checker that operates similarly to a linter is proven technology, 
thanks to mypy. So let's not waste too much time talking about syntax 
for some feature that Python will probably never get, and even if it 
does get it, it won't be in 3.5. How about we play around with 
type-checkers for a release or ten before proposing static typing for 
Python?


-- 
Steve


More information about the Python-ideas mailing list