好好学python·函数进阶(递归函数,回调函数,闭包函数,匿名函数,迭代器)
生活随笔
收集整理的這篇文章主要介紹了
好好学python·函数进阶(递归函数,回调函数,闭包函数,匿名函数,迭代器)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數進階
- 遞歸函數
- 回調函數
- 閉包函數
- 特點
- 匿名函數 lambda 表達式
- 迭代器
- iter()
- next()
- 迭代器的取值方案
- 迭代器取值特點,取一個少一個,直到都取完,最后再獲取就會報錯
- 檢測迭代器和可迭代對象的方法
遞歸函數
在定義的函數內,調用該函數
# 斐波那契數列指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……,即F(n)=F(n-1)+F(n-2) # fib(n),其中參數n的含義:斐波那契數的序號(如:n = 1時,返回1;n=3時,返回2)。 def fib(n):""":type n: int:rtype: int"""while (n > 0):if (n == 1 or n == 2):return 1else:return fib(n - 1) + fib(n - 2)return 0print(fib(3)) # 實現一個數的階乘 def jiecheng(n):if n == 1:return 1else:return n*jiecheng(n-1)print(jiecheng(2))回調函數
函數A中使用函數作為參數,且調用了該函數參數
def love():print('123')def func(f): # 使用函數作為參數print(f,type(f))f() #調用了函數參數func(love)閉包函數
函數A中返回值為A中的內函數, 并且該內函數使用了A中局部變量。內函數就是閉包函數
特點
匿名函數 lambda 表達式
使用lambda表達式定義匿名函數
lambda 參數1,參數2… : 返回值
- lambda表達式不是一個代碼塊,又稱為一行代碼的函數
- lambda表達式只能訪問自己的形參
迭代器
可迭代對象可以轉化為迭代器對象,從第一個元素從前往后遍歷,直到集合中的所有元素被訪問完畢
iter()
功能:把可迭代的對象,轉為一個迭代器對象
參數:只能是可迭代的對象 (字符串,列表,元組,字典)
返回值: 迭代器對象
注意:迭代器一定是一個可以迭代的對象,但是可迭代對象不一定是迭代器
next()
next()函數可以去調用迭代器,并返回迭代器中的下一個數據
迭代器的取值方案
迭代器取值特點,取一個少一個,直到都取完,最后再獲取就會報錯
檢測迭代器和可迭代對象的方法
迭代器一定是可迭代的對象,可迭代的對象不一定是迭代器
from collections.abc import Iterator,Iterable varstr = '123456' res = iter(varstr) # type() 函數返回當前數據的類型, # isinstance() 檢測一個數據是不是一個指定的類型 r1 = isinstance(varstr,Iterable) # True 可迭代對象 r2 = isinstance(varstr,Iterator) # False 不是一個迭代器 r3 = isinstance(res,Iterable) # True 可迭代對象 r4 = isinstance(res,Iterator) # True 是一個迭代器 print(r1,r2) print(r3,r4) # 迭代器一定是一個可迭代的對象,可迭代對象不一定是迭代器總結
以上是生活随笔為你收集整理的好好学python·函数进阶(递归函数,回调函数,闭包函数,匿名函数,迭代器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NameError: global na
- 下一篇: 好好学python · 内置函数(ran