2017-08-15 55 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