这是我的代码:
from collecionts.abc import Sequence
from typing import TypeVar
T = TypeVar('T')
def first(a: Sequence[T]) -> T:
return a[0]
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我可以将任何类似序列的对象作为参数传递给first
函数,例如:
first([1,2,3])
Run Code Online (Sandbox Code Playgroud)
它返回1
但是,它会引发 TypeError:' ABCMeta' 对象不可订阅。这里发生了什么?我怎样才能让它工作,我有一个使用typing
模块的函数,它可以采用第一个元素,无论其类型是什么?
更新
如果我使用,它运行得很好,和from typing import Sequence
之间有什么区别from collections.abc import Sequence
from typing import Sequence
小智 2
两件事情。
第一个是,如果您传递的参数不符合您指定的类型,则类型模块不会在运行时引发错误。打字模块有助于总体清晰度和智能感知或类似的东西。
关于您遇到的错误可能是由于您使用的python版本所致。尝试升级到 python >= 3.9
归档时间: |
|
查看次数: |
6232 次 |
最近记录: |