Python Typedict不会引发任何错误

rjee0c15  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(133)

我使用typedict并按照

下面的img文档进行测试,结果应该引发TypeError,但实际上没有

我使用的是python 3.10.8,我尝试了几个示例代码,但没有出现任何类型错误,谢谢
我要存档的示例:我想检查传递给func example_01的参数是否与声明的BaseModel一样有效我想在它传递给函数时立即检查它,而不是在函数体中处理它

kxkpmulp

kxkpmulp1#

从文档和您在问题中添加的函数docstring中:
TypedDict声明一个字典类型,该字典类型期望其所有示例都具有某个键集,其中每个键都与一致类型的值相关联。此期望在运行时不进行检查,而仅由类型检查器强制执行。
Python运行时不会强制执行这些限制,它们应该只作为输入"提示"使用,而不是运行时验证器。
你可能想使用类型检查/验证库,比如Pydantic来验证你的对象,下面是Pydantic的一个基本模型:

In [1]: from pydantic import BaseModel
   ...: 
   ...: class User(BaseModel):
   ...:     id: int
   ...:     name: str = "John Doe"
   ...: 

In [2]: User(name=120, id="gavin")
---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)
File <ipython-input-8-cae6c1ea967b>:1, in <cell line: 1>()
----> 1 User(name=120, id="gavin")

File ~/Desktop/projects-bench/env/lib/python3.10/site-packages/pydantic/main.py:342, in pydantic.main.BaseModel.__init__()

ValidationError: 1 validation error for User
id
  value is not a valid integer (type=type_error.integer)

点击此处阅读更多信息。

相关问题