隐藏页面特效

类型注解Callable

from collections.abc import Callable """ Callable[[ParamType1, ParamType2], ReturnType] [参数1类型,参数2类型], 返回值类型 Callable[[], int] 是 Callable[[], float] 的子类型,因为 int 是 float 的子类型。 这意味着,那个 Callable 的返回值类型经历了协变(covariant), 因为 int 和 float 之间具有子类型关系,而且变化方向与 Callable 类型中返回值的类型变化方向相同。 反过来,如果回调预期处理 float 值,却提供接受 int 参数的回调,则会导致类型错误。 Callable[[int], None] 不是 Callable[[float], None] 的子类型。 虽然 int 是 float 的子类型,但是在参数化 Callable 类型中,关系是相反的, 即 Callable[[float], None] 是 Callable[[int], None] 的子类型。 因此我们说,那个 Callable 声明的参数类型经历了逆变(contravariant)。 """ def update(probe: Callable[[], float], display: Callable[[float], None]) -> None: temperature = probe() display(temperature) def probe_ok() -> int: #int是float的子类型,所以Callable定义的返回类型float兼容int,即协变 return 42 def display_wrong(temperature: int) -> None: print(hex(temperature)) update(probe_ok, display_wrong) # 类型错误error: Argument 2 to "update" has incompatible type "Callable[[int], None]"; expected "Callable[[float], None]" [arg-type] def display_ok(temperature: complex) -> None: print(temperature) update(probe_ok, display_ok)

__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/17661795.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示