type hinting backward compatibility with python 3.0 to 3.4

Chris Angelico rosuav at gmail.com
Fri May 19 21:57:52 EDT 2017


On Sat, May 20, 2017 at 11:42 AM, Gregory Ewing
<greg.ewing at canterbury.ac.nz> 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).
>
> So I can see how someone relying on the principle of least
> surprise might assume that.

They're function metadata. What would the principle of least surprise
say about this?

print("Spam")
def func(arg: print("Foo") = print("Quux")):
    print("Blargh")
print("Fred")
func()
print("Eggs")

What should be printed, and in what order?

Actually, Python does violate least-surprise in one area here. There's
one message that gets printed "out of order" compared to my
expectation. I wonder if it's the same one that other people will be
surprised at.

ChrisA



More information about the Python-list mailing list