在使用 Python 開發的程序中,避免不了會用到遞回函式,但遞回函式的回傳值有時會出現意想不到的情況,
下面來舉一個例子:
>>> def fun(i):
... i += 1
... if i < 5:
... fun(i)
... else:
... return i
...
>>> r = fun(0)
>>> print(r)
比如上面這段代碼,乍一看沒什么問題,但回傳值并不是我們期望的 5,而是 None,
>>> print(r)
None
要解決這個問題也簡單,就是在執行遞回呼叫的時候,加上 return 陳述句,
修改之后的代碼如下:
>>> def fun(i):
... i += 1
... if i < 5:
... return fun(i)
... else:
... return i
...
>>> r = fun(0)
>>> print(r)
5
現在輸出的結果就符合我們的預期了,
最后補充一句,如果想要了解這背后深層的原理,可以看看函式呼叫堆疊相關的資料,這里就不過多介紹了,
本文就到這里了,如果覺得有用的話歡迎點贊,轉發和關注,謝謝,
推薦閱讀:
- 計算機經典書籍
- 技術博客: 硬核后端開發技術干貨,內容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等,
- Go 程式員: Go 學習路線圖,包括基礎專欄,進階專欄,原始碼閱讀,實戰開發,面試刷題,必讀書單等一系列資源,
- 面試題匯總: 包括 Python、Go、Redis、MySQL、Kafka、資料結構、演算法、編程、網路等各種常考題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/444363.html
標籤:其他
上一篇:Struts 2 學習筆記
