我对Python比较新,很高兴发现Python3中的类型提示功能。我阅读了PEP 484,并在这个SO问题中发现,提问者想知道为什么函数的返回类型没有被检查。回答者指出PEP 484中的一个部分说明了检查不会在运行时进行,并且意图是类型提示将由外部程序解析。
我启动了python3 REPL,并决定尝试一下。
>>> def greeting() -> str: return 1
>>> greeting()
1
到目前为止一切顺利。我对函数参数感到好奇,于是我尝试了以下代码:
>>> def greeting2(name: str) -> str: return 'hi ' + name
>>> greeting2(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in greeting2
TypeError: Can't convert 'int' object to str implicitly
现在问题似乎出在这里,因为至少在函数参数方面是有检查的。我的问题是为什么会对参数进行检查,但不对返回类型进行检查?