Python 类型提示与数字

drw*_*wie 0 python type-hinting python-typing

我刚刚遇到了 Python 类型提示的奇怪行为。

>>> def x(y: int):
    return y
>>> d=x('1')
>>> print(type(d))
<class 'str'>
>>> d
'1'
Run Code Online (Sandbox Code Playgroud)

当我将数字作为字符串传递到参数被转换为 int 的函数时,它仍然会生成字符串。我认为这种意想不到的行为的关键在于它不是铸造,而是暗示。但为什么它会这样呢?如果我传递“one”作为参数,它会给我一个 NameError。

小智 5

您没有在函数内投射任何内容,类型提示就是这样;提示。它们充当文档,不会将类型强制转换为其他类型。

为此,您需要

def x(y):
    return int(y)
Run Code Online (Sandbox Code Playgroud)

现在要准确地输入提示这个函数

def x(y: str) -> int:
    return int(y)
Run Code Online (Sandbox Code Playgroud)