On Sat, 20 May 2017 11:42 am, Gregory Ewing wrote: > Steve D'Aprano wrote: >> On Fri, 19 May 2017 11:35 pm, Edward Ned Harvey (python) wrote: >> >>> I *thought* python 3.0 to 3.4 would *ignore* annotations, but it >>> doesn't... >> >> Why would you think that? > > Ever since Guido retconned the purpose of annotations to be > for static type hinting *only*, it would make more sense for > the interpreter to ignore them, or at least not evaluate them > immediately at run time (since it would avoid all the problems > of forward references, etc).
You mean treat them as syntactically comments? def function(arg:I can put ***ANYTHING*** I like here!!!): ... I don't think that's a good idea. Ever since they were introduced, annotations have always been evaluated and recorded in the function.__annotations__ attribute. That makes them available at runtime for decorator to do additional processing, or for introspection. > So I can see how someone relying on the principle of least > surprise might assume that. Oh I don't know, given that everything else apart from #comments is evaluated at runtime[1] in Python, I think it would be surprising if annotations weren't. [1] Apart from some constant folding done as an optimization. -- Steve Emoji: a small, fuzzy, indistinct picture used to replace a clear and perfectly comprehensible word. -- https://mail.python.org/mailman/listinfo/python-list