路飞学城Python-Day9
【23.函數-高階函數】
變量可以指向函數,函數的參數能接收變量,那么一個函數就可以接收另一個函數作為參數,這種函數就稱為高階函數
如果一個函數可以接收另一個函數,這個函數就稱為高階函數
輸出結果
?
總結
1.接收一個或多個函數作為輸入
2.return返回另外一個函數
【24.遞歸介紹】
什么是遞歸?
遞歸就是在函數的過程中調用自己
輸出結果
python在調用的過程中超過了最大遞歸層的限制
print(sys.getrecursionlimit())
sys.getrecursionlimit(1500)#修改最大遞歸層數的限制
總結
遞歸調用就是不斷的在函數自己里再執行,一直不結束,直到把內存撐爆了,所以需要有限制機制,于是python內部就加上了函數的限制
【25.函數-遞歸與棧的關系】
遞歸的本質,函數的調用時通過棧來執行的,棧就像是一個容器,內部是有數據大小限制的
每執行一次函數就會往棧里放內容,不斷的放在棧里就容易溢出,只有函數結束以后,棧才會處理垃圾數據
【26.遞歸的作用】
可以用來解決復雜的數學問題,比如斐波那契數列等
使用遞歸的場景
輸出結果
【27.遞歸的特性總結】
遞歸是層級進入執行,函數執行完結束也是層級結束的
?
1.必須有一個明確的結束條件,要不就會變成死循環了,最終撐爆系統
2.每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少
3.遞歸執行效率不高,遞歸層次過多會導致棧溢出
?
【28.遞歸的作用】
遞歸的作用,斐波那契數列,漢諾塔,求階乘等
輸出結果
?
【29.尾遞歸優化】
有沒有優化的方式可以優化遞歸的效率?
尾遞歸就是在函數執行的時候直接用return調用,第一層調用第二層函數的時候,使用return直接結束第一層函數的執行,就是層層之間互相不再有對應的關系
也就是說當沒有必要保留每一層的數據的時候,就可以直接用return調用下一層的函數,不再對棧有多余的占用
然而尾遞歸優化并不是所有的語言都是支持的,在C語言里是支持的,但是再python里是沒有任何用的,python不會有尾遞歸優化的
【30.函數-內置方法1,2,3,4,5】
python里有幾十種內置方法
abs()>>取絕對值 函數返回數字的絕對值
dict()>>把一個數據轉換成字典
help()>>查看幫助
min()>>方法返回給定參數的最小值,參數可以為序列
max()>>方法返回給定參數的最大值,參數可以為序列
setattr()>>【面向對象詳細講】函數對應函數 getatt(),用于設置屬性值,該屬性必須存在
all()>>函數用于判斷給定的可迭代參數(元祖或列表) iterable 中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、FALSE 外都算 TRUE
any()>>any() 函數用于判斷給定的可迭代參數 iterable 是否全部為 False,則返回 False,如果有一個為 True,則返回 True
bool()>>判斷輸入的值是不是True
dir()>>打印當前文件存在的所有變量,包括你自定義的和python解釋器自帶的
hex()>>十六進制,將一個數字轉換為十六進制的表達方式
next()
slice()>>切片
divmod()>>求整除和余數,先得到結果再返回余數
id()>>返回傳入的內存地址
object()>>
sorted()>>排序,可以對字典的value排序,用在列表里的排序,sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作
ascii()>>返回一個可打印的對象字符串方式表示
enumerate() >>枚舉法用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中
input()>>用戶交互輸入
oct()>>將輸入的數字轉換為八進制
staticmethod()>>返回函數的靜態方法【以后會講】
bin()>>轉換為二進制
eval() >>函數用來執行一個字符串表達式,并返回表達式的值,將字符串解析成代碼(只能處理單行的代碼)
exec()>>和eval功能相同,而且能執行多行代碼,exec是沒有返回值的
int()>>將數字轉換為整數,不能轉換的就報錯
open()>>打開文件
str()>>將數字或字符轉換為字符串形式
isintance()>>【面向對象】
ord()>>通過字符串返回在ascii表中的位置
chr()>>通過ascii表中的位置返回字符串對應值
sum()>>求和
bytearray()>>返回一個新字節數組,這個數組里的元素是可變的(原內存地址修改,不是重開辟內存空間)
map()>>根據提供的函數對指定序列做映射,可以用來求列表內的元素自乘(配合lambda函數)list(map(lambda x:x+3,[1,2,3,4,5]))
filter()>>過濾,找到符合條件的值--list(filter(lambda x:x>3,[1,2,3,4,5]))
pow()>>返回輸入的數字的冪級數
super()>>【面向對象講】
bytes()>>返回輸入的二進制數
float()>>浮點數
iter()>>生成迭代器
print()>>print(*objects, sep=' ', end='\n', file=sys.stdout)
tuple()>>轉換為元祖
callable()>>判斷一個東西是否可調用,可以判斷變量是否是函數
len()>>判斷字符串的長度
property()>>【面向對象】
type()>>判斷參數的數據類型
frozenset()>>返回一個凍結的集合,凍結后集合不能再添加或刪除任何元素
vars()>>打印當前所有的變量
locals()>>在函數的內部執行,打印當前函數的所有的局部變量
globals()>>無論在函數內部還是外部都打印全局的變量
zip()>>函數用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表,只能是一一對應的關系
?
轉載于:https://www.cnblogs.com/pandaboy1123/p/9276237.html
總結
以上是生活随笔為你收集整理的路飞学城Python-Day9的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新潮能源是一家什么公司
- 下一篇: mysql基础拓扑图