精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python中的匿名函數及遞歸思想簡析

開發 后端
上次咱們基本說了一下函數的定義及簡單使用,Python中的基本函數及其常用用法簡析,現在咱們整點進階一些的。同樣都是小白,咱也不知道實際需要不,但是對于函數的執行順序以及裝飾器的理解還是很有必要的。

匿名函數

前言

上次咱們基本說了一下函數的定義及簡單使用,Python中的基本函數及其常用用法簡析,現在咱們整點進階一些的。同樣都是小白,咱也不知道實際需要不,但是對于函數的執行順序以及裝飾器的理解還是很有必要的。

[[326783]]

首先咱們先簡單復習一下:

函數的定義:

 

  1. def 函數名字(參數): 
  2.   具體的函數語句塊 
  3.   return [需要返回的數據] 

函數的執行:

 

  1. # 函數只有被調用的時候才執行,函數可以執行多次 
  2. 函數名稱() 

局部與全局變量:

不同的函數有不同的作用域

 

  1. def test1(): 
  2.     name = 'XXX' 
  3.     print(name
  4.  
  5.  
  6. def test2(): 
  7.     name = 'YYY' 
  8.     print(name
  9.  
  10.  
  11. test1() 
  12. test2() 

 

  1. 局部想使用全局變量 使用global 變量名 
  2. 局部與全局變量同名仍要同時使用全局變量局部變量 globals()['變量名'

還有一種情況就是函數內嵌套了函數想使用上次層函數的變量。

 

  1. def test1(): 
  2.    name = 'XXX' 
  3.  
  4.    def test2(): 
  5.        # 使用上一層的變量并打印查看 
  6.        nonlocal name 
  7.        print(name
  8.    # 在函數test1中調用執行test2 
  9.    test2() 
  10.  
  11.  
  12. test1() 
  13. # 直接調用test2會拋出異常test2 未定義 
  14. # test2() 

 

 

 

因為箭頭那里有空格,Python也是根據這種格式來判斷作用域的,只能像紅色框那樣在同一級的地方調用。

一個函數內返回另一個函數:

 

  1. def test1(): 
  2.    print("in the test1"
  3.  
  4.  
  5. def test2(): 
  6.    print("in the test2"
  7.    return test1() 
  8.  
  9.  
  10. test2() 

想把上面的這段代碼解釋清楚,咱們插播一個遞歸。

遞歸的特性:

  • 遞歸就是自己調用自己
  • 必須有個明確的結束條件,不然會導致棧溢出
  • 每次遞歸問題都有所減少
  • 遞歸效率不高,但是有時候真的好用

來個最經典的斐波拉契數組。

 

  1. # 斐波拉契數組長這樣:1,1,2,3,5,8,13,21,34,55... 
  2. def fabonacci(n): 
  3.    # 結束條件 
  4.    if n <= 2: 
  5.        # 因為前兩個數字都是1,所以當n小于等于2時返回1 
  6.        v = 1 
  7.        return v 
  8.    # 大于2的話就自己調用自己,斐波拉契第n個數字等于n-1的數字+n-2數字的和 
  9.    v = fabonacci(n-1)+fabonacci(n-2) 
  10.    return v 
  11.  
  12.  
  13. print(fabonacci(6)) 

 

 

  1. import sys 
  2.  
  3. # 打印當前遞歸深度,默認為1000 
  4. print(sys.getrecursionlimit()) 
  5. # 設置最大遞歸深度 
  6. sys.setrecursionlimit(999999999) 
  7. print(sys.getrecursionlimit()) 

其實就是表達函數內調用另一個函數,會等待另一個函數執行完畢,該函數再執行到結束...感覺遞歸講不講都一樣了...so,咱們還是趕緊回到正題,代碼的執行順序是這樣子的....

 

 

 

 

當然還能這么玩:

 

  1. def test1(): 
  2.    print("in the test1"
  3.  
  4.  
  5. def test2(): 
  6.    print("in the test2"
  7.    # 此處返回test1的內存地址 
  8.    return test1 
  9.  
  10.  
  11. test2()() 
  12. # 先執行test2(),返回test1的內存地址 
  13. # 加上小括號執行test1 

匿名函數

  1. 使用lambda 創建
  2. 簡單來說匿名函數就是一個沒有名字的簡單函數
  3. 匿名函數只有一個表達式,return 表達式計算的值

創建一個簡單的匿名函數,命令如下所示。

 

  1. 格式       lambda 參數列表:表達式 

 

  1. lambda num1, num2: num1+num2 

使用一個變量接收一下,就是保存的內存地址,加上小括號傳入參數就能運行了。

 

  1. func = lambda num1, num2: num1+num2 
  2.  
  3. print(func(1, 2)) 

我使用的編輯器是VS Code ,發現了一個問題,格式化代碼的時候把匿名函數改成了函數...具體原因及細節未知。

格式化前:

 

 

 

 

格式化后:

 

 

 

 

map 映射(循環讓每一個函數執行函數,結果保存到新的列表)

map(匿名函數,可迭代對象)

map()處理序列中的每個元素,得到的結果是一個可迭代對象,該對象個數和位置與原來一樣。

 

  1. li = [1, 5, 3, 2, 3] 
  2. res = map(lambda x: x+1, li) 
  3. print(type(res)) 
  4. # 返回的map對象 
  5. print(list(res)) 

filter 判斷

filter()遍歷序列中的每個元素,得到的結果是True則留下來。

 

  1. people = ['sb_laowang''sb_xiaozhang''sb_laozhang''xiaoliu'
  2. # 將滿足以帥比開頭的保存為新的對象 
  3. res = filter(lambda x: x.startswith('sb'), people) 
  4. print(type(res)) 
  5. print(list(res)) 

reduce:將序列進行合并操作

 

  1. from functools import reduce 
  2. num_li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
  3. str_li = list('hello'
  4. res_num = reduce(lambda x, y: x+y, num_li) 
  5. res_str = reduce(lambda x, y: x+y, str_li) 
  6. print(str_li) 
  7.  
  8.  
  9. print(type(res_num), res_num) 
  10. print(type(res_str), res_str) 

第一次運行的時候x,y是可迭代對象的前兩個,后面x都是之前的累加,y則是沒有進行累加的第一個,說一下reduce(lambda x, y: x+y, num_li)這個吧,可以打個斷點看一下。

 

  1. 第一次x = 1 , y = 2 
  2. 第二次x = 3 , y = 3 
  3. 第三次x = 6 , y = 4 
  4. 第四次x = 10 , y = 5 
  5. ... 

匿名函數的好處:

  • 簡化代碼
  • 沒有名字,避免函數名字沖突

查看某個模塊的所有方法:

 

  1. # print(dir(模塊名字)) 
  2. # 例如: 
  3. import time 
  4. print(dir(time)) 
  5.  
  6. print(dir(list)) 

提取數據結構:

 

  1. # 可能有這種需求,一個人給你個文件,讀取出來是文本,或者是需要計算的公式,但是他是字符串 
  2.  
  3. # 假如是個字典格式的 {'name':'sb'},但是他是個文本 
  4. temp1 = "{'name':'sb'}" 
  5. print(temp1,type(temp1)) 
  6. temp2 = eval(temp1) 
  7. print(temp2, type(temp2)) 
  8.  
  9. temp3 = "1+2" 
  10. print(eval(temp3)) 
  11.  
  12. # 注意只能提取出來格式與要提取的格式一樣的文本 

總結:

本文基于Python,主要講解了遞歸思想和匿名函數相關知識,例舉了幾個常用的匿名函數及其基本用法,如lambda、map、reduce、filter等,并簡述了匿名函數的優點。關于匿名函數,還有以下一點需要注意。

匿名函數書寫簡單,適用于僅有一個簡單表達式的函數,并且避免了函數名字沖突的問題,兩個函數名字沖突下面函數會覆蓋上面函數的功能,如:

 

  1. def func(): 
  2.    print('aaa'
  3.  
  4. def func(): 
  5.    print('bbb'
  6.  
  7.  
  8. func() 

 

但是編輯器能檢測出兩個同名的函數,有一個編輯異常,雖然能正常運行,但是顯然不符合代碼開發規范。匿名函數沒有名字肯定不會出現函數名字重復。

責任編輯:華軒 來源: Python爬蟲與數據挖掘
相關推薦

2020-05-11 09:38:52

Python開發函數

2023-10-17 11:34:42

2009-09-03 10:52:41

C#遞歸樹

2022-11-11 10:23:04

2010-01-20 14:25:56

函數調用

2015-05-13 10:36:43

2010-01-25 10:10:42

C++函數參數

2010-02-22 10:27:44

Python應用程序

2009-08-13 14:36:40

C#結構體構造函數

2017-05-16 08:59:16

MVCCMYSQL樂觀鎖

2011-07-12 14:04:58

2010-09-10 13:57:55

echo命令

2010-09-09 11:25:09

2009-06-08 21:25:29

Java聲音技術

2010-09-10 09:52:44

開源協議棧

2010-09-08 16:25:39

SIP協議棧

2010-09-13 16:58:13

2011-06-16 10:04:36

光纜光纖

2010-05-06 12:02:43

路由負載均衡

2022-09-02 08:03:44

IO程序網卡
點贊
收藏

51CTO技術棧公眾號

精品日韩欧美一区二区| 国产精品第13页| 日本91av在线播放| 五月婷六月丁香| 中文幕av一区二区三区佐山爱| 亚洲精品成a人| 免费中文日韩| 国产农村妇女毛片精品| 99精品国产一区二区青青牛奶| 国产精品日韩精品在线播放| 日韩精品视频免费看| 天天躁日日躁狠狠躁欧美| 欧美三级在线播放| 久久成人福利视频| 亚洲1卡2卡3卡4卡乱码精品| 成人午夜私人影院| 国产精品嫩草影院久久久| 久久网中文字幕| av永久不卡| 亚洲国产成人精品久久| 999在线观看| 欧美男人天堂| 亚洲综合免费观看高清完整版在线| 欧美国产视频在线观看| 亚洲国产中文字幕在线| 免费高清在线视频一区·| 久久久亚洲国产| 国产稀缺精品盗摄盗拍| 国产精品羞羞答答在线观看| 欧美va日韩va| 香蕉视频xxxx| 色撸撸在线视频| 51一区二区三区| 亚洲成人一区在线| 自拍偷拍99| 高清美女视频一区| a级高清视频欧美日韩| 亚洲精品免费一区二区三区| 瑟瑟视频在线免费观看| 亚洲尤物在线| 久久免费少妇高潮久久精品99| 中文字幕求饶的少妇| 国产成人3p视频免费观看| 亚洲国产精品嫩草影院久久| 午夜影院免费观看视频| 婷婷久久综合九色综合99蜜桃| 色哟哟精品一区| 国产精品一区二区免费在线观看| 日本色护士高潮视频在线观看| 国产精品国产三级国产普通话99| 视频一区二区三| 第一视频专区在线| 久久亚洲春色中文字幕久久久| 国产精品一国产精品最新章节| 精品毛片一区二区三区| 国产成人综合亚洲91猫咪| 91免费综合在线| 一级视频在线播放| 久久成人综合网| 国产精品一区二区三区久久久| 中文在线资源天堂| 久久精品久久精品| 成人黄色片在线| 国产精品无码AV| 国产精品91xxx| 亚洲一区二区三区视频| 性生交大片免费看女人按摩| 高清不卡在线观看av| 国产伦精品一区二区三区高清版| 国产综合在线播放| 99国产欧美久久久精品| 欧洲高清一区二区| 在线观看h片| 国产精品污www在线观看| 一区二区三视频| 日本孕妇大胆孕交无码| 亚洲18女电影在线观看| 国产福利一区视频| 日本一区二区三区中文字幕| 欧美一卡二卡在线观看| 成人在线观看一区二区| 校花撩起jk露出白色内裤国产精品| 亚洲欧美三级伦理| 午夜成人亚洲理伦片在线观看| 亚洲精品国产首次亮相| 久久久中文字幕| 天天射天天干天天| 国产综合一区二区| 国产麻豆乱码精品一区二区三区| 日本一级在线观看| 国产精品九色蝌蚪自拍| 欧美精品卡一卡二| 秋霞国产精品| 精品久久人人做人人爱| 国产精品扒开腿做爽爽| 亚洲精品二区三区| 欧美亚洲在线观看| 国产情侣激情自拍| 91麻豆精品在线观看| 亚洲一区二区三区精品视频| 后进极品白嫩翘臀在线播放| 欧美性猛交xxxx乱大交蜜桃 | 亚洲国产日本| 国产精品91视频| 精品国产999久久久免费| 久久影院视频免费| 青草全福视在线| 久久野战av| 精品久久久久香蕉网| 人妻熟人中文字幕一区二区| 在线免费观看欧美| 国产精品视频色| 日韩精品视频无播放器在线看| 国产精品国产三级国产有无不卡| 奇米精品一区二区三区| 91国产一区| 亚洲色图校园春色| 免费毛片在线播放免费| 麻豆视频一区二区| 欧洲成人一区二区| 成年网站在线视频网站| 4438成人网| 亚洲精品一区二区三区影院忠贞| 精品69视频一区二区三区Q| 国产欧美一区二区三区在线看| 三级在线视频| 婷婷成人激情在线网| 在线免费黄色小视频| 日韩欧美国产精品综合嫩v| 2018国产精品视频| 丰满人妻一区二区三区无码av| 国产精品九色蝌蚪自拍| 天天爱天天操天天干| 欧美有码在线| 久久久久久久av| a级片在线播放| **性色生活片久久毛片| 亚洲36d大奶网| 午夜欧洲一区| 69**夜色精品国产69乱| 成人免费观看在线视频| 亚洲色图第一区| 日本中文字幕影院| 日韩毛片视频| 国产一区二区在线免费| 中文字幕日本在线| 欧美日韩一区成人| 婷婷国产成人精品视频| 蜜桃视频一区二区三区在线观看| 日韩三级电影免费观看| 日韩欧美一区二区三区在线观看| 亚洲香蕉伊综合在人在线视看| 亚洲欧美另类在线视频| 91网站视频在线观看| 国产高清精品在线观看| 神马影视一区二区| 国产精品盗摄久久久| а天堂8中文最新版在线官网| 欧美性三三影院| 国产一区二区三区视频播放| 精品在线观看视频| 在线观看17c| 国产成人一二| 欧美亚洲在线视频| av在线播放av| 在线综合视频播放| 免费又黄又爽又色的视频| 成人免费不卡视频| 日韩人妻精品无码一区二区三区| 亚洲免费福利一区| 国产精品视频资源| 制服丝袜在线播放| 亚洲国产高潮在线观看| 欧美a视频在线观看| 国产精品美女久久久久aⅴ | 国产亚洲欧洲在线| 亚洲中文字幕在线一区| 一区二区免费看| 国产精品嫩草av| 日韩高清不卡在线| 天天操天天干天天玩| 国产96在线亚洲| 国产精品91久久久久久| 制服丝袜在线播放| 亚洲免费视频一区二区| 影音先锋国产在线| 亚洲综合免费观看高清在线观看| 久久国产精品无码一级毛片| 秋霞午夜av一区二区三区| 黄色一级片av| 中文字幕精品影院| 91精品国产高清久久久久久91裸体 | 一区二区三区四区毛片| 激情文学一区| 天堂av一区二区| 国产+成+人+亚洲欧洲在线| 国产精品com| 色呦呦在线看| 一区二区三区视频免费在线观看| 亚洲国产精品视频在线| 91国模大尺度私拍在线视频| 黄色一级片在线| 中文字幕不卡在线观看| 伦理片一区二区| 狠狠色狠狠色综合| 日韩av一二三四| 欧美日韩精品一本二本三本 | 黄色在线网站| 欧美一二三在线| 男操女视频网站| 精品国产1区2区| 多男操一女视频| 久久免费的精品国产v∧| 国产探花一区二区三区| 奇米精品一区二区三区在线观看| 岛国大片在线播放| 欧美国产三级| 日本不卡一区二区三区四区| 精品一区二区三| 久久99精品国产一区二区三区| 国产精品白丝久久av网站| 国产精品va在线| 一级毛片久久久| 久久久噜噜噜久久久| 成人午夜在线影视| www高清在线视频日韩欧美| 国产高清视频在线观看| 精品一区二区三区三区| 亚洲欧美激情另类| 日韩欧美国产电影| 国产麻豆91视频| 欧美日韩视频专区在线播放| 国产精品久久久久久久久夜色| 欧美日韩亚洲一区二| 亚洲一区 视频| 亚洲国产综合91精品麻豆| 欧美做爰爽爽爽爽爽爽| 亚洲欧洲精品成人久久奇米网| 一级片手机在线观看| 91亚洲精品一区二区乱码| 美女露出粉嫩尿囗让男人桶| 丰满亚洲少妇av| 91精品人妻一区二区三区四区| 国产一区二区h| 永久av免费在线观看| 国产乱妇无码大片在线观看| 亚洲欧美日韩网站| 国产精品自在在线| 佐佐木明希电影| 成人免费黄色大片| 亚洲精品在线视频免费观看| 成人97人人超碰人人99| 亚洲色图14p| 久久嫩草精品久久久精品一| 国产又粗又猛又爽视频| 国产欧美日韩视频在线观看| 天天操天天舔天天射| 国产精品―色哟哟| 97成人资源站| 亚洲一区在线播放| 国产性xxxx高清| 欧美性极品xxxx娇小| 高清乱码免费看污| 欧美无人高清视频在线观看| 亚洲一卡二卡在线| 日韩精品一区二区三区蜜臀 | 亚洲天堂开心观看| 川上优的av在线一区二区| 中文字幕日韩欧美精品在线观看| 九义人在线观看完整免费版电视剧| 久久福利网址导航| 高潮在线视频| 国产精品久久久久久久久久久久久久| **国产精品| 国产精品一区二区欧美黑人喷潮水| 欧美天堂影院| 亚洲国产日韩综合一区| 亚洲欧美文学| 男人和女人啪啪网站| 日韩avvvv在线播放| 日本一本在线视频| 91亚洲国产成人精品一区二三| av黄色在线免费观看| 亚洲男人的天堂一区二区| 国产精品果冻传媒| 国产性生活一级片| 看电视剧不卡顿的网站| 无人码人妻一区二区三区免费| 成人做爰69片免费看网站| 国产精品无码毛片| 国产精品成人网| 国产香蕉在线视频| 欧美手机在线视频| 成人爽a毛片一区二区| 一本色道久久综合亚洲精品小说 | 国产毛片一区二区| 人妻无码一区二区三区| 国产精品久久毛片| 日韩黄色精品视频| 欧美群妇大交群中文字幕| 人人妻人人澡人人爽人人欧美一区| 亚洲午夜色婷婷在线| 国产精品69xx| 国产在线精品播放| 亚洲+小说+欧美+激情+另类 | 日本高清视频在线观看| 午夜精品一区二区三区av| 欧美成人aaa| 久久久久久亚洲精品不卡4k岛国 | 色噜噜狠狠狠综合曰曰曰| 热三久草你在线| 91在线高清免费观看| 成人91在线| 免费成人午夜视频| 国产jizzjizz一区二区| 日本激情视频一区二区三区| 日韩欧美亚洲成人| 日本黄色免费视频| 久久91亚洲人成电影网站 | 99精品国产一区二区| 成人网18免费网站| 97在线播放视频| 99精品在线观看视频| 欧美成人一二三区| 在线不卡的av| 成黄免费在线| 国产福利精品在线| 色婷婷狠狠五月综合天色拍| 欧美久久在线观看| 成人午夜在线免费| 久久高清无码视频| 日韩免费视频线观看| 麻豆视频网站在线观看| 国产精品久久久久久亚洲影视| 香蕉久久99| 夫妻免费无码v看片| 91在线小视频| 亚洲精品1区2区3区| 亚洲成人精品视频| 在线网址91| 91久久精品www人人做人人爽| 婷婷综合视频| 又黄又爽又色的视频| 亚洲乱码国产乱码精品精98午夜| 国产三级三级在线观看| 另类专区欧美制服同性| 激情综合五月| 免费人成自慰网站| 波多野结衣在线aⅴ中文字幕不卡| 久久久久性色av无码一区二区| 日韩精品一区二区三区在线| 欧美人与动牲性行为| 豆国产97在线| 亚洲作爱视频| 毛片网站免费观看| 在线观看亚洲一区| 欧美日本一道| 国产精品自产拍在线观| 国产精品久久久久9999赢消| 九九九九九九九九| 亚洲一区二区在线免费观看视频 | 艳母动漫在线免费观看| 久久99精品久久久久久| 日本黄色小说视频| 亚洲成色777777在线观看影院 | 国产精品美女网站| 欧美残忍xxxx极端| 国产成人精品一区二区三区在线观看| 亚洲成人免费视| 手机福利小视频在线播放| 国产精品jizz在线观看麻豆| 欧美激情黄色片| 国产ts在线观看| 日韩欧美在线观看视频| 在线国产91| 国产高清在线一区二区| 香蕉精品999视频一区二区| 无码人妻精品一区二区中文| 欧美精品第1页| zzzwww在线看片免费| 五月婷婷综合色| 国产98色在线|日韩| 少妇高潮av久久久久久| 欧美插天视频在线播放| 欧美男人操女人视频| 手机免费av片| 亚洲成人在线观看视频| av电影在线观看| 国产成人精品免费视频大全最热| 翔田千里一区二区| 三级全黄做爰视频| 国产手机视频精品| 久久国产精品美女| 国产男女激情视频| 亚洲免费视频成人| 国产乱视频在线观看| 91超碰在线免费观看| 久久蜜桃精品| 久久精品99久久久久久| 伊人av综合网|