我正在试验Python中的类型注释.大多数情况都很清楚,除了那些以另一个函数为参数的函数.

考虑下面的例子:

from __future__ import annotations

def func_a(p:int) -> int:
    return p*5
    
def func_b(func) -> int: # How annotate this?
    return func(3)
    
if __name__ == "__main__":
    print(func_b(func_a))

输出仅打印15.

我应该如何注释func_b( )中的func参数?

推荐答案

您可以将typing模块用于Callable个注释.

Callable注释提供了参数类型列表和返回类型:

from typing import Callable

def func_b(func: Callable[[int], int]) -> int:
    return func(3)

Python-3.x相关问答推荐

使用Python装载. iso文件

在numpy. linalg的qr之后使用scipy. integrate中的solve_ivp时出现了一个奇怪的错误

正则表达式匹配并提取括号前的单词

DuckDB:带有嵌套对象的星形表达式

Django 3.2/Django-cms 3.11:查找错误:型号帐户.客户用户未注册

逐行比较2个Pandas数据帧,并对每一行执行计算

从 https://www.niftytrader.in/stock-options-chart/sbin 提取 SBIN 股票最大痛苦值的 Python 代码不起作用 - 我错过了什么?

三重奏:为什么频道被记录为使用async with,而不是with?

为什么不能用格式字符串 '-' 绘制点?

try 使用 GEKKO 求解非线性方程组.系统有多种解决方案,但 GEKKO 给出了错误的解决方案.我该如何解决?

根据按不同列中的值分组的平均值划分 DataFrame

Python base64.b32hexencode 未创建预期结果

无法理解此递归函数的分配和环境用法

如何使用复选按钮更改 Pyplot 轴的属性?

当我判断另一个 checkButton 时,如何判断两个 python tkinter checkButtons?

在初始化之前禁用`__setattr__`的干净方法

如何在 Python 3 中通过 IP 获取 WhoIs 信息?

当默认 pip 为 pip2 时,升级 pip3 的正确格式是什么?

如何在 Python 3.2 中退出?

如何在 Python 3.4 中使用 pip 3?