python - Python 函数中的类型规范

标签 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:

最佳答案

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

将类型提示视为可解析和机器可检查的注释。

doc.python about type hints

关于python - Python 函数中的类型规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55665488/

相关文章:

python - 如何从 Pandas 数据框中删除行列表?

python - 如何序列化 Django MPTT 系列并保持其层次结构?

python - 我正在计算观看次数,但这会导致错误

python - 两个文件的 python 'open' 中的模拟

python - 优化 python、numpy 中的矩阵运算

python - 如果我在任务中发送 http 请求,为什么我的 Airflow 会挂起?

python - 如何加速 Numpy sum 和 Python for-loop?

python - 防止 numpy 将数值向上转换为字符串

python - 何时建议使用 ret_val 变量?

python - SQLalchemy 查询基于排除关系中的项目