[Python-ideas] Optional Static Typing -- the Python Way

Cem Karan cfkaran2 at gmail.com
Sun Aug 24 16:11:30 CEST 2014


On Aug 24, 2014, at 8:41 AM, Steven D'Aprano <steve at pearwood.info> wrote:

> On Sat, Aug 23, 2014 at 08:37:34PM -0400, Cem Karan wrote:
> 
>> Going slightly sideways on this -- I think this is why we should use 
>> decorators instead of annotations; as has already been mentioned twice 
>> on the list, 
>> http://cdsmith.wordpress.com/2011/01/09/an-old-article-i-wrote/ does a 
>> good job pointing out that static and dynamic typing systems are 
>> separate but overlapping concepts.  It also points out that both have 
>> their place.  If we define decorators that can be turned on or off 
>> easily (command-line option?  Environment variable? other?), then the 
>> end user can choose if if her or she is going to do static, dynamic, 
>> both, or none.  This could be useful when trying to track down that 
>> annoying bug in long-running production code.
> 
> This applies equally to annotations, and in fact that's exactly what 
> Mypy already does. You can run Mypy to do static type checking, or not 
> run it, and the annotations will be ignored.
> 
> E.g. given a module program.py, you can:
> 
> # Type check and then run the program:
> mypy program.py
> 
> # Just run it, with no extra type checks:
> python3 program.py
> 
> 
> Guido's proposal is *not* to add static types to the CPython 
> interpreter, at least not yet. It is just to standardise on annotations 
> for type hinting, agree on a syntax for those type hints, and then allow 
> third-part tools (linters, editors, IDEs, etc.) and alternative 
> interpreters (like mypy) to actually use the type hints.

OK, I think I see what you're saying.  Since the annotations will always be available, the static/dynamic nature doesn't matter, since we just choose the flags/interpreter/whatever, and it will check the annotations, correct?  If so, then you're right, and we don't need decorators for this.

> Looking forward to the distant future, if CPython gains its own built-in 
> type checker, it will probably come with a runtime switch to enable or 
> disable such type checking. But that's possible regardless of whether we 
> use decorators, annotations, or both.
> 
>> Also, Types and Programming Languages by Dr. Pierce has been mentioned 
>> at least twice as well; would it be useful to ask him to join in the 
>> discussion?
> 
> Does he know anything about Python? Will he care? There are hundreds of 
> programming languages, unless he has a particular interest in Python I 
> can't see why he would care about this discussion. But if you are a 
> colleague or friend of his, by all means invite him to join up, this is 
> a public forum.

I just invited him.

Thanks,
Cem Karan


More information about the Python-ideas mailing list