精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人av综合网| 怡春院在线视频| 在线看视频不卡| 青青草偷拍视频| 大香伊人久久精品一区二区| 欧美日韩国产精品一区二区三区四区| 国产精品自产拍在线观| 中文字幕免费看| 欧美爱爱视频| 亚洲视频在线一区二区| 国产乱码精品一区二区三区卡| 久久久久无码精品国产| 免费欧美激情| 欧美亚洲国产一区在线观看网站| 亚洲精品高清国产一线久久| 亚洲一级视频在线观看| 亚洲福利国产| 久久精品视频亚洲| ass精品国模裸体欣赏pics| 亚洲日韩中文字幕一区| 亚洲一区二区视频| 日韩欧美亚洲在线| 亚洲av无码乱码国产精品| 久久婷婷久久| 97香蕉久久夜色精品国产| 91丝袜在线观看| 精品国产伦一区二区三区观看说明 | 亚洲精品97久久中文字幕无码| 久久综合导航| 136fldh精品导航福利| 五月天激情丁香| 女人让男人操自己视频在线观看| 国产精品乱人伦| 欧美三级华人主播| 黄色三级网站在线观看| 精品一区在线看| 亚洲日韩欧美视频一区| 欧美久久久久久久久久久| 亚洲精品aaa| 色欧美88888久久久久久影院| 超碰免费在线公开| 欧美视频免费一区二区三区| 三级在线观看一区二区| 午夜精品久久久久久99热软件 | 国产999久久久| 美腿丝袜在线亚洲一区| 国产成人在线播放| 麻豆精品久久久久久久99蜜桃| 亚洲黑丝一区二区| 欧美激情第6页| 先锋资源在线视频| 一级特黄色大片| 久久午夜电影| 国产精品福利片| 成人黄色三级视频| 蜜桃av噜噜一区| 国产在线视频2019最新视频| 艳妇乳肉豪妇荡乳av| 蜜臀av在线播放一区二区三区| 国产精品高潮呻吟久久av无限| 一本一道无码中文字幕精品热| 亚洲专区欧美专区| 国产成人极品视频| 欧美一级黄视频| 捆绑调教一区二区三区| 久久躁狠狠躁夜夜爽| 日本女人性生活视频| 色中色综合网| 欧美mv日韩mv国产网站app| 天堂在线一区二区三区| 精品视频一区二区三区在线观看 | www.欧美国产| 成人福利视频网站| 国产国产精品人在线视| 国产一级片av| 久久精品99久久久| 99精彩视频| 久久精品偷拍视频| 久久99精品久久只有精品| 成人性生交xxxxx网站| 精品国产av 无码一区二区三区| 国产福利一区二区三区| 国产精品久久久久久久久久久久午夜片 | 丰满亚洲少妇av| 明星裸体视频一区二区| 888奇米影视| 国产成人在线视频网址| 狼狼综合久久久久综合网| 91网页在线观看| 亚洲视频网在线直播| 国产一区二区网| 天然素人一区二区视频| 欧美刺激午夜性久久久久久久| 偷拍女澡堂一区二区三区| 日韩精品诱惑一区?区三区| 免费不卡欧美自拍视频| 99精品在线播放| 国产原创一区二区| 免费一区二区三区| 99热国产在线| 91黄色免费网站| 中文字幕在线播放一区二区| 久久99高清| 欧美激情精品久久久久久黑人| 日本视频在线观看免费| 国产成人精品午夜视频免费 | 欧美一区二区视频| 亚洲欧美乱综合| 日本一极黄色片| 2021中文字幕在线| 亚洲精品大片www| 国产福利视频在线播放| 日韩中文字幕无砖| 伊人伊成久久人综合网站| 久久久久久久久久久网| 麻豆91精品视频| 久久久久资源| 免费电影网站在线视频观看福利| 在线观看成人小视频| 国产大尺度视频| 忘忧草精品久久久久久久高清| 亚洲欧洲一区二区三区久久| 欧美激情精品久久| 免费一区二区视频| 欧美精品一区二区视频| 精品日韩av| 欧美一区二区三区四区在线观看| 变态另类ts人妖一区二区| 最新日韩av| 成人在线资源网址| 精品国产99久久久久久| 欧美色男人天堂| 人妻少妇精品视频一区二区三区| 欧美激情第8页| 成人午夜黄色影院| 天堂资源在线中文| 欧美网站一区二区| 神马久久久久久久久久久| 久久成人一区| 免费一区二区三区在在线视频| f2c人成在线观看免费视频| 欧美一级片在线看| 国产黄页在线观看| 福利成人导航| 欧美tk—视频vk| 麻豆91精品91久久久| 国产在线播放一区三区四| 伊人久久大香线蕉精品| 国产精品天堂蜜av在线播放| 亚洲图中文字幕| 亚洲毛片一区二区三区| 久久精品国产亚洲高清剧情介绍| 日本亚洲自拍| 成人在线观看免费播放| 一区二区三区四区精品| 高潮毛片又色又爽免费 | www.综合| 亚洲国产精品一区二区久| 日韩成人av毛片| 91免费观看视频| 北条麻妃av高潮尖叫在线观看| 精品一区毛片| 国产精品无av码在线观看| 欧美天天影院| 精品欧美一区二区久久 | a91a精品视频在线观看| 精品视频一区二区| 3d性欧美动漫精品xxxx软件| 一区二区欧美久久| 国产乱码久久久| 一个色综合网站| 国产亚洲无码精品| 青青国产91久久久久久| 91九色露脸| 久久视频www| 欧美三级视频在线观看| 欧美三级黄色大片| 成人午夜免费视频| 免费男同深夜夜行网站| 一区二区三区网站 | 国产精久久一区二区| 久久99久久99精品免观看粉嫩| 黄色片一区二区| 欧美丝袜丝nylons| 免费在线视频一区二区| 久久综合久色欧美综合狠狠| 美女在线视频一区二区| 国产在线欧美| 视频一区国产精品| 亚洲一区二区三区免费| 国产精品99久久久久久久久久久久| aiai在线| 日韩av中文字幕在线播放| 中文字幕av久久爽| 亚洲午夜久久久| 久久久国产一级片| 成人h动漫精品一区二| 超碰在线人人爱| 伊人影院久久| 一本一本a久久| 亚洲欧美日本伦理| 91嫩草国产在线观看| 忘忧草在线www成人影院| 欧美大片在线看免费观看| 黄色小视频在线观看| 日韩欧美亚洲国产另类| 中文字幕免费高清在线观看| 午夜精品在线视频一区| 欧美日韩午夜视频| 国产亚洲1区2区3区| 一区二区传媒有限公司| 欧美国产一级| 日本一区免费看| av自拍一区| 91久久精品视频| a级片国产精品自在拍在线播放| 亚洲美女精品成人在线视频| 国产嫩bbwbbw高潮| 一区二区三区色| 永久免费看片视频教学| 国产欧美一区二区三区网站| 六十路息与子猛烈交尾| 大陆成人av片| 国产美女18xxxx免费视频| 免费国产自线拍一欧美视频| 成人精品视频在线播放| 欧美在线日韩| 国产欧美自拍视频| 999久久久精品国产| 色播亚洲视频在线观看| 国产精品一区二区99| 欧美xxxx黑人又粗又长精品| 久久365资源| 国产精品.com| 成人性生交大片免费看96| 91夜夜未满十八勿入爽爽影院| 久久久久久久性潮| 国产精品久久久久久久久粉嫩av | 午夜精品爽啪视频| 国产精品9191| 91视频.com| 北京富婆泄欲对白| 不卡欧美aaaaa| 丰满岳乱妇一区二区| 成人免费精品视频| 亚洲av成人片无码| 99综合电影在线视频| 少妇被狂c下部羞羞漫画| 成人av在线看| 久久人人爽人人爽人人片| 久久影院电视剧免费观看| www.色多多| 国产欧美日韩麻豆91| 又色又爽的视频| 中文字幕亚洲一区二区av在线 | 国产精品xnxxcom| 91在线中文字幕| 久久久精品区| 国产精品果冻传媒潘| 天海翼精品一区二区三区| 免费精品视频一区二区三区| 国产一区二区三区日韩精品 | 狂野欧美性猛交xxxxx视频| 久久免费国产视频| 亚洲人一区二区| 伊人久久大香线蕉无限次| 免费精品视频一区| 91嫩草亚洲精品| 黄色一级片黄色| 性欧美xxxx大乳国产app| 国产又粗又长又大的视频| 韩国三级在线一区| 日本美女视频网站| 国产日韩欧美在线一区| www.99热| 亚洲一区在线观看视频| 国产真实乱偷精品视频| 在线视频一区二区三区| 99久久国产热无码精品免费| 精品成人私密视频| 二区三区在线| 欧美大片免费看| 色8久久影院午夜场| 2019国产精品视频| 亚洲色图美女| 伊人网在线免费| 久久婷婷一区| 高清中文字幕mv的电影| 中文在线资源观看网站视频免费不卡| 91麻豆免费视频网站| 疯狂欧美牲乱大交777| 国产又黄又粗又猛又爽| 精品亚洲一区二区三区在线观看 | 亚洲区小说区图片区| 最近2019中文免费高清视频观看www99| h视频在线免费观看| 国产91色在线播放| 136国产福利精品导航网址应用| 美女被啪啪一区二区| 欧美精品首页| 亚洲视频第二页| 久久久久久久久久美女| 精品少妇theporn| 精品视频一区二区不卡| 色综合成人av| 欧美激情xxxx性bbbb| av日韩一区| 日韩av在线一区二区三区| 亚洲久久在线| 人妻精品久久久久中文字幕69| 欧美激情一区二区三区四区| 日本熟妇色xxxxx日本免费看| 欧美电影影音先锋| shkd中文字幕久久在线观看| 欧美性做爰毛片| 国产区精品视频在线观看豆花| 中文字幕精品一区日韩| 秋霞国产午夜精品免费视频| 亚洲一区二区观看| 亚洲成人av一区| 成人av手机在线| 久久夜色撩人精品| 久久亚洲国产精品尤物| 日韩videos| 久久中文在线| 无码人妻aⅴ一区二区三区69岛| 亚洲成a人v欧美综合天堂| www三级免费| 久久视频精品在线| 婷婷激情成人| 伊人av成人| 精品综合久久久久久8888| www..com.cn蕾丝视频在线观看免费版 | 亚洲免费精彩视频| 精精国产xxxx视频在线野外| 国产精品一区二区a| 欧美特黄一级| 涩多多在线观看| 亚洲精品国产一区二区三区四区在线| 91麻豆国产视频| 久久精品亚洲94久久精品| 人人精品久久| 国产精品h视频| 国产精品69久久久久水密桃| 国产大学生自拍| 欧美变态tickle挠乳网站| 婷婷丁香在线| 国产一区不卡在线观看| 亚洲每日在线| 国产男男chinese网站| 在线观看一区二区视频| aaa在线免费观看| 亚洲已满18点击进入在线看片 | 国产99对白在线播放| 欧美成人免费va影院高清| av综合网页| 欧美牲交a欧美牲交| 国产日韩精品一区| 一二三四区视频| 欧美日韩国产va另类| 欧美日韩大片免费观看| 无码人妻精品一区二区三区66| 国产精品热久久久久夜色精品三区| 一本一道精品欧美中文字幕| 毛片精品免费在线观看| jazzjazz国产精品麻豆| 日韩av综合在线观看| 国产欧美精品一区二区三区四区 | 国产麻豆一精品一av一免费| 欧产日产国产v| 日韩精品免费看| 久久99国产精品二区高清软件| 强开小嫩苞一区二区三区网站| 懂色一区二区三区免费观看| 久久国产视频精品| 日韩视频免费在线| 国产精品三p一区二区| 免费看a级黄色片| 亚洲欧美日韩在线| 神马午夜在线观看| 国产精品亚洲自拍| 在线成人国产| 亚洲女同二女同志奶水| 精品裸体舞一区二区三区| 婷婷六月国产精品久久不卡| 国产一二三四五| 国产性做久久久久久| 国内老熟妇对白xxxxhd| 日本中文字幕成人| 你懂的视频一区二区| 性欧美13一14内谢| 日韩女优毛片在线| 国产在线|日韩| 国产不卡一区二区视频| 国产精品美女久久久久久久久久久 | 国产精品av免费观看| 久久色在线观看| 俄罗斯嫩小性bbwbbw| 国产欧美精品日韩| 免费一区视频|