壹、使用遞歸的背景
先來看壹個?接口結構:
這個孩子,他是壹個列表,下面有6個元素
展開children下第壹個元素[0]看看:
發現[0]除了包含壹些字段信息,還包含了 children 這個字段(喜當爹),同時這個children下包含了2個元素:
展開他的第壹個元素,不出所料,也含有children字段(人均有娃)
可以理解為children是個對象,他包含了壹些屬性,特別的是其中有壹個屬性與父級children是壹模壹樣的,他包含父級children所有的屬性。
比如每個children都包含了壹個name字段,我們要拿到所有children裏name字段的值,這時候就要用到遞歸啦~
二、find_children.py
拆分理解:
1.首先import requests庫,用它請求並獲取接口返回的數據
2.若children以上還有很多層級,可以縮小數據範圍,定位到children的上壹層級
3.來看看定義的函數
我們的函數調用:find_children(node_f, 'children')
其中,node_f:json字段
children:遞歸對象
?以下這段是實現遞歸的核心:
? if items['children']:
?items['children']不為None,表示該元素下的children字段還有子類數據值,此時滿足if條件,可理解為 if 1。
?items['children']為None,表示該元素下children值為None,沒有後續可遞歸值,此時不滿足if條件,可理解為 if 0,不會再執行if下的語句(不會再遞歸)。
至此,每壹層級中children的name以及下壹層級children的name就都取出來了
希望到這裏能幫助大家理解遞歸的思路,以後根據這個模板直接套用就行
(晚安啦~)
源碼參考: /archives/5767