摘要:針對尾遞歸優化的語言可以通過尾遞歸防止棧溢出。尾遞歸事實上和循環是等價的,沒有循環語句的編程語言只能通過尾遞歸實現循環。標準的解釋器沒有針對尾遞歸做優化,任何遞歸函數都存在棧溢出的問題。
python 頭部:
#!/usr/bin/env python # -*- coding: utf-8 -*-函數的參數
Python的函數具有非常靈活的參數形態,既可以實現簡單的調用,又可以傳入非常復雜的參數。
默認參數一定要用不可變對象,如果是可變對象,運行會有邏輯錯誤!
要注意定義可變參數和關鍵字參數的語法:
*args是可變參數,args接收的是一個tuple;
**kw是關鍵字參數,kw接收的是一個dict。
以及調用函數時如何傳入可變參數和關鍵字參數的語法:
可變參數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過args傳入:func((1, 2, 3));
關鍵字參數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過kw傳入:func({"a": 1, "b": 2})。
使用args和*kw是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。
python默認參數必須指向不變對象!
python通過添加*定義可變參數(list或tuple實現)
關鍵字參數通過在dict前加**傳遞
遞歸函數使用遞歸函數的優點是邏輯簡單清晰,缺點是過深的調用會導致棧溢出。
針對尾遞歸優化的語言可以通過尾遞歸防止棧溢出。尾遞歸事實上和循環是等價的,沒有循環語句的編程語言只能通過尾遞歸實現循環。
Python標準的解釋器沒有針對尾遞歸做優化,任何遞歸函數都存在棧溢出的問題。
列表生成式用列表生成式,可以快速生成list,可以通過一個list推導出另一個list,而代碼卻十分簡潔。
思考:如果list中既包含字符串,又包含整數,由于非字符串類型沒有lower()方法,所以列表生成式會報錯:
>>> L = ["Hello", "World", 18, "Apple", None] >>> [s.lower() for s in L] Traceback (most recent call last): File "生成器", line 1, in AttributeError: "int" object has no attribute "lower" 使用內建的isinstance函數可以判斷一個變量是不是字符串: >>> x = "abc" >>> y = 123 >>> isinstance(x, str) True >>> isinstance(y, str) False 請修改列表生成式,通過添加if語句保證列表生成式能正確地執行
generator是非常強大的工具,在Python中,可以簡單地把列表生成式改成generator,也可以通過函數實現復雜邏輯的generator。
要理解generator的工作原理,它是在for循環的過程中不斷計算出下一個元素,并在適當的條件結束for循環。對于函數改成的generator來說,遇到return語句或者執行到函數體最后一行語句,就是結束generator的指令,for循環隨之結束
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43296.html
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
摘要:項目當中用到貼一點筆記社區模塊方案選用在上查詢模塊入門教程尾遞歸不支持尾遞歸優化社區有提供優化的腳本不過實際項目使用有問題刷新引用模塊同樣模仿可以在當中測試函數那么刷新模塊像是這樣的文檔比較豐富的不過也比較龐雜實現起來 項目當中用到 https://github.com/Cirru/sepal.py貼一點筆記. PyPI 社區模塊方案選用 pip, 在 PyPI 上查詢模塊, 入門教程...
摘要:學習筆記七數學形態學關注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學習筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現代方法基于區域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個提問: pyth...
摘要:此文是記錄我在學習的過程,主要目的是怕學了后面的了前面的,方便復習。不得不承認,老外的課程確實比國內的課程更有趣。所以提升性能的個關鍵降低電子需要行徑的距離提高每秒發射電子的次數。 此文是記錄我在udacity.com學習python的過程,主要目的是怕學了后面的wan了前面的,方便復習。也希望能幫到和我一樣的初學者,這個課程的是Udacity的《計算機基礎導論》,https://cl...
摘要:請回復這個帖子并注明組織個人信息來申請加入。權限分配靈活,能者居之。數量超過個,在所有組織中排名前。網站日超過,排名的峰值為。導航歸檔社區自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權,請聯系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...
閱讀 2624·2021-11-18 10:07
閱讀 1083·2021-08-03 14:04
閱讀 726·2019-08-30 13:08
閱讀 2579·2019-08-29 15:33
閱讀 1087·2019-08-29 14:07
閱讀 2985·2019-08-29 14:04
閱讀 1435·2019-08-29 11:19
閱讀 1144·2019-08-29 10:59