2017-08-15 54 views
0

是否有一些类型检查API从python3.5键入,我可以用它来检查运行时嵌套类型。 例如:python嵌套类型检查在运行时没有外部包

from typing import List 
check_type([1,2,3], List[int]) # True 
check_type([1,2,''], List[int]) # False 

这是唯一的例子(也可以是3个或更多级别的嵌套,有列表,元组,字典)

+0

无但是你可以很容易地实现它:'对于obj中的li,'def check_type(li,inner_type):return isinstance(li,list)和all(isinstance(obj,inner_type))' – DeepSpace

+0

也许这有助于:http:// mypy- lang.org/?或查看[PEP 484](https://www.python.org/dev/peps/pep-0484/)底部的其他任何参考资料。 –

回答

0

可以使用all()内置函数象下面这样:

def check_type(iterable, tp): 
    return all(isinstance(item, tp) for item in iterable) 

输出:

>>> check_type([1, 2, 3], int) 
True 
>>> 
>>> check_type([1, 2, ''], int) 
False 
+1

['isinstance'推荐使用'type'](https://docs.python.org/3/library/functions.html#type) - _“建议使用'isinstance()'内置函数进行测试一个对象的类型,因为它考虑了子类。“_。 –

+0

对不起,迭代只是示例,只是为了简化问题。在真实的结构可以是复杂的,所以我想我可以打电话的东西没有手动落到结构的底部 – user3479125

+0

@ChristianDean谢谢!我更新了我的答案。 – ettanany