Python遞歸函數(shù)返回值為None問題及解決
Python遞歸函數(shù)返回值為None
在使用 Python 開發(fā)的過程中,避免不了會用到遞歸函數(shù)。但遞歸函數(shù)的返回值有時會出現(xiàn)意想不到的情況。
舉一個例子
>>> def fun(i): ... i += 1 ... if i < 5: ... fun(i) ... else: ... return i ... >>> r = fun(0) >>> print(r)
比如上面這段代碼,乍一看沒什么問題,但返回值并不是我們期望的 5,而是 None
。
>>> print(r) None
解決這個問題也簡單
就是在執(zhí)行遞歸調(diào)用的時候,加上 return
語句。
修改之后的代碼
如下:
>>> def fun(i): ... i += 1 ... if i < 5: ... return fun(i) ... else: ... return i ... >>> r = fun(0) >>> print(r) 5
現(xiàn)在輸出的結(jié)果就符合我們的預期了。
最后補充一句,如果想要了解這背后深層的原理,可以看看函數(shù)調(diào)用棧相關(guān)的資料,這里就不過多介紹了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Kears 使用:通過回調(diào)函數(shù)保存最佳準確率下的模型操作
這篇文章主要介紹了Kears 使用:通過回調(diào)函數(shù)保存最佳準確率下的模型操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06總結(jié)python實現(xiàn)父類調(diào)用兩種方法的不同
最近在工作中實現(xiàn)父類調(diào)用的時候發(fā)現(xiàn)了一個錯誤,然后通過分析實踐總結(jié)出來了,下面這篇文章主要給大家總結(jié)了python中實現(xiàn)父類調(diào)用兩種方法的不同之處,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01使用python將excel數(shù)據(jù)導入數(shù)據(jù)庫過程詳解
這篇文章主要介紹了使用python將excel數(shù)據(jù)導入數(shù)據(jù)庫過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08