【问题标题】:Why doesn't it report error with wrong parameter type? [duplicate]为什么它不报告错误参数类型的错误? [复制]
【发布时间】:2021-12-16 06:37:44
【问题描述】:
def nlp_dict(input_doc:dict):
  text = input_doc['text']

我想如果我调用这个函数会报错:

nlp_dict('A test')

正确的形式应该是:

nlp_dict({'text': 'A test'})

错误出现在第2行:

text = input_doc['text']

当编译器发现它的参数类型是str而不是dict时,为什么没有立即发生错误?那么参数类型的值是多少呢?

【问题讨论】:

  • Python 是一种动态语言,编译器不会对标称、带注释的类型进行静态分析。这理解非常重要

标签: python


【解决方案1】:

类型提示就是这样;对 IDE 的提示,而不是某种类型的强制机制!

Pydantic 等第三方工具对此进行了扩展以进行运行时类型检查

【讨论】:

  • Pydantic 被广泛使用还是不常用?
  • 当然,但它并没有完全按照您的意图使用,它只是通过扩展类型提示来启用运行时类型检查(例如,在 FastAPI 中用于向客户端描述 API 并验证请求)
  • @marlon 有几个第三方静态分析工具,mypypyrightpytypemypy 可能是最接近“官方”的,主要是因为 Guido 是积极开发的一部分。
  • @juanpa.arrivillaga 在 python 中使用 mypy 或类似工具进行静态类型检查是一种好习惯吗?
  • @marlon 这完全取决于你。我发现它对任何非平凡的项目都非常有帮助。
猜你喜欢
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多