我有一个函数,可以接受任何可以被索引的变量作为输入,比如列表或元组.我如何在函数的类型提示中指出这一点?

推荐答案

你的方法是接受sequence,所以使用typing.Sequence.这是一个泛型,因此您可以指定序列必须包含的对象类型:

from typing import Sequence

def foo(bar: Sequence[int]):
    # bar is a sequence of integers

引用Python glossary条:

一个iterable,通过__getitem__()特殊方法支持使用整数索引的高效元素访问,并定义了返回序列长度的__len__()方法.一些内置序列类型为liststrtuplebytes.

Python-3.x相关问答推荐

使用 pandas 数据帧映射到中转(节点)点的跨容量请求

Python defaultdict 在获取时返回 None,尽管使用默认值初始化

总结基于条件的值,如果不匹配则保留当前值

如何在带有 GUI 的 python 游戏中设置回答时间限制?

机器学习实验笔记本的工作区 url

ImportError:无法从“jinja2”导入名称“escape”

是否将dict转换为一个数据帧,每个值都有重复的键?

为什么 Python 返回 [15] for [0xfor x in (1, 2, 3)]?

python中奇怪的作用域行为

ImportError:无法从“distutils”(/usr/lib/python3.8/distutils/__init__.py)导入名称“sysconfig”

如何生成满足某些条件的三个随机整数?

Python 3.x 中的 NoneType 在哪里?

ModuleNotFoundError 与 pytest

在 Ipython 中使用 Pylint (Jupyter-Notebook)

具有不均匀间隙的 Python 范围

如何将 Matplotlib 图形转换为 PIL Image 对象(不保存图像)

有没有办法从 dict 和 collections.abc.MutableMapping 一起继承?

寻找最长的重叠范围

使用 pytest.fixture 返回模拟对象的正确方法

TypeError:无法实例化类型元组;使用 tuple() 代替