def greeting(name: str) -> str:
return 'Hello ' + name
Run Code Online (Sandbox Code Playgroud)
用str调用函数的正确方法
>>> greeting("John")
'Hello John'
Run Code Online (Sandbox Code Playgroud)
如果我用int调用它:
>>> greeting(2)
TypeError: must be str, not int
Run Code Online (Sandbox Code Playgroud)
用列表打电话
>>> greeting(["John"])
TypeError: must be str, not list
Run Code Online (Sandbox Code Playgroud)
一切正常吗?greeting函数总是接受str作为参数.
但是,如果我尝试测试函数返回类型,例如,使用相同的函数但将返回类型更改为int.
def greeting(name: str) -> int:
return 'Hello ' + name
Run Code Online (Sandbox Code Playgroud)
函数返回str但类型定义为int,并且不会引发异常:
>>> greeting("John")
'Hello John'
Run Code Online (Sandbox Code Playgroud)
另一个例子:
def greeting(name: str) -> str:
return len(name)
>>> greeting("John")
4
Run Code Online (Sandbox Code Playgroud)
尽管PEP 484表示返回类型是预期的str,但它实际上并不类似于参数类型检查,这可以在上面的例子中看到.
这表明name参数的预期类型是str.类似地,预期的返回类型是str.
我错过了什么或没有返回类型的类型检查?