遞歸函數中,return的誤區

return語句用於退出函數的,向調用方返回一個表達式。python

return在不帶參數的狀況下(或者沒有寫return語句),默認返回None。函數

None是一個特殊的值,它的數據類型是NoneType。NoneType是Python的特殊類型,它只有一個取值None。 它不支持任何運算也沒有任何內建方法,和任何其餘的數據類型比較是否相等時永遠返回false,也能夠將None賦值給任何變量。。。url

1》當函數沒有顯式return,默認返回None值code

2》當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是Noneorm

當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None遞歸

當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是Noneip

def parse_url(self, url, *args, **kwargs):
        """處理URL請求"""
        proxies = {'https': re.sub("http","https",self.get_ip.get_proxies())}
        print(proxies)
        try:
            response = self.parse.get(url, headers=self.headers, proxies=proxies, timeout=5)
        except:
            return self.parse_url(url)   #<----這裏,報錯的話實現遞歸操做了,須要return
        else:
            # print(response.text)
            if str(response.status_code) != "200":
                return self.parse_url(url)   #<----這裏,知足條件的話實現遞歸操做了,須要return
            elif str(response.status_code) == "200" and "抱歉!頁面沒法訪問" in response.text:
                return self.parse_url(url)   #<----這裏,知足條件的話實現遞歸操做了,須要return
            else:
                print("這裏是內部response   {}".format(response))
                return response  # < --- 最後返回的值!!

必須注意的是!!!當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None 當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None 當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None 當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None 當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None 當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是None 當遞歸函數有return時,在遞歸的地方也要return,否則永遠返回的是Noneget

相關文章
相關標籤/搜索