Python函数中的类型规范

时间:2019-04-13 12:34:04

标签: python

我相信可以在Python中指定类型,如下所述:https://docs.python.org/3/library/typing.html

我正在使用从上一页上修改过的以下简单功能:

def greeting(name: str) -> str:
    print("From inside function.")
    return 'Hello ' + name

如预期的那样,当字符串作为参数发送时,它可以工作。但是,当使用整数作为参数时,它仍会到达函数内部,并且在return语句级别会引发错误:

> print(greeting(55))
From inside function.
Traceback (most recent call last):
  File "testing.py", line 16, in <module>
    print(greeting(55))
  File "testing.py", line 13, in greeting
    return 'Hello ' + name
TypeError: Can't convert 'int' object to str implicitly

如果函数定义没有类型说明,则会发生相同的错误:

def greeting(name):

那在函数头中有类型说明的好处是什么?

def greeting(name: str) -> str:

1 个答案:

答案 0 :(得分:0)

Python是动态类型的;在运行时name可以是 any 值。函数注释仅提供提示类型,Python本身会忽略这些类型,但其他工具可用于 static 类型检查。也就是说,在运行时,greeting(4)是完全合法的(但是当您尝试评估Hello ' + 4时会导致运行时错误)。但是,像mypy这样的工具会将greeting(4)标记为错误,因为实际上4不是您所说的str 拿。

认为类型提示是可分析的和机器可检查的注释。