小编dem*_*nno的帖子

为什么在python3中没有检查返回类型?

PEP 484示例- 类型提示

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.

我错过了什么或没有返回类型的类型检查?

python types function typechecking python-3.x

5
推荐指数
2
解决办法
172
查看次数

标签 统计

function ×1

python ×1

python-3.x ×1

typechecking ×1

types ×1