我正在试验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相关问答推荐

如何融化具有自定义名称的Pandas

如何在 django 中没有循环的情况下获得前键的前键?

从 h264 帧解析数据包时 PyAV 不一致

BeautifulSoup 和 pd.read_html - 如何将链接保存到最终数据框中的单独列中?

删除重复项,但将值相加为一

当 None 被传递时,如何将默认值应用于 python 数据类字段?

Python 3.9.8 使用 Black 并导入 `typed_ast.ast3` 失败

在 macbook pro M1 上安装 Tensorflow 时出现“zsh:非法硬件指令 python”

当 Python “None or True”返回 True 时,为什么 pandas “None | True”返回 False?

在 Python 中判断布尔环境变量

你如何修复 numpy 和 pandas 的“runtimeError: package failed to pass a sanity check”?

在 ubuntu 20.04 中安装 libpq-dev 时出现问题

如何在python3中导入cv2?

Python 请求很慢并且需要很长时间才能完成 HTTP 或 HTTPS 请求

如何在两个方向(向前,向后)上获取每个元素的值的滑动窗口?

在数据类中创建类变量的正确方法

os.path.join 是否有 Pathlib 替代项?

在 Docker 中使用 PYTHONDONTWRITEBYTECODE 有什么缺点吗?

Django 'pip install django-heroku'(psycopg2) 错误阻止部署到 Heroku

是否有 Python 3.x 发布生命周期的官方指南?