根据PEP484,允许将以下内容用作类型注释
v: int # built-in class
v: MyABC # abstract base class
v: types.FunctionType # types defined in `types` module
v: MyClass # user-defined class
v: None # None is a value, but ok
v: typing.List[int] # Generics
我想检查variable
是否可以用作类型批注:
def is_annotation(v: Any) -> bool:
# How to implement?
is_annotation(int) == True
is_annotation(1) == False
is_annotation(types.FunctionType) == True
is_annotation(None) == True
键入有一个内部函数(_type_check),用于确定批注是否有效。编写函数时,如果批注无效,则会引发类型错误。我们可以通过调用_type_check并在引发异常时返回false的函数惰性地利用此漏洞
或者,我们可以重写函数,将其行为从引发异常更改为返回False
相关问题 更多 >
编程相关推荐