最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python closure閉包解釋及其注意點詳解

 更新時間:2019年08月28日 11:12:01   作者:心悅君兮君不知-睿  
這篇文章主要介紹了Python closure閉包解釋及其注意點詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、閉包

1.定義:當一個函數在內部定義函數,并且內部的函數應用外部函數的參數或者局部變量,當內部函數被當做返回值的時候,相關參數和變量保存在返回的函數之中,這種結果,叫做閉包。

2.例子:連載17中的myF4就是一個典型的例子​。

3.閉包常見的坑

def count():
  #定義列表
fs = []
for i in range(1, 4):
  def f():
  return i * i
fs.append(f)
# 按照我們的預期, 應該是fs = [f, f, f].其中f中一次包含1, 4, 9, 這樣才對, 但實際結果不是, 我么接著看
return fs
f1, f2, f3 = count()
print(f1(), f2(), f3())

不是我們預期的1 4 9。

(1)原因分析:返回函數引用了變量i,i并非立即執(zhí)行,而是等到三個函數都返回的時候才統(tǒng)一執(zhí)行,此時i已經變?yōu)?,最終調用的時候卻反回了3*3.

(2)總結:返回閉包的時候,返回函數不能引用任何循環(huán)變量了

(3)解決方案:再創(chuàng)建一個函數,用該函數的參數綁定循環(huán)變量的當前值,無論該循環(huán)變量以后如何改變,已經綁定的函數參數值不變。

​改進代碼:

def count2():
  def f(j):
    def g():
      return j*j
    return g
  fs = []
  for i in range(1,4):
    fs.append(f(i))
    #我們進行了傳參,因此j就固定下來,它就執(zhí)行了j
  return fs
f4,f5,f6 = count2()
print(f4(),f5(),f6())

二、裝飾器

def hello():
  print("我是一個程序")
f = hello
f()
hello()
#用id來證明f和hello是一個函數
print(id(f),id(hello))

三、源碼:

d20_2_closure_interpretation

地址:https://github.com/ruigege66/Python_learning/blob/master/d20_2_closure_interpretation

,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值

相關文章

  • Python處理unicode字符的方法詳解

    Python處理unicode字符的方法詳解

    這篇文章主要介紹了Python處理unicode字符的方法詳解,unicodedata中定義了所有Unicode字符的字符屬性,主要包含兩個功能,其一是根據名字查找字符;其二是給定字符查找其對應的信息,需要的朋友可以參考下
    2023-08-08
  • python 窮舉指定長度的密碼例子

    python 窮舉指定長度的密碼例子

    這篇文章主要介紹了python 窮舉指定長度的密碼例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python3.7安裝pyaudio教程解析

    Python3.7安裝pyaudio教程解析

    這篇文章主要介紹了Python3.7安裝pyaudio教程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • keras 自定義loss model.add_loss的使用詳解

    keras 自定義loss model.add_loss的使用詳解

    這篇文章主要介紹了keras 自定義loss model.add_loss的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • django 使用內置messages的操作

    django 使用內置messages的操作

    這篇文章主要介紹了django 使用內置messages的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 18個幫你簡化代碼的Python技巧分享

    18個幫你簡化代碼的Python技巧分享

    選擇學習?python?時,最令我震驚的是它的簡單性和可讀性。但是你知道還可以用更少的代碼行可以讓?Python?代碼變得更簡單嗎?本文為大家總結了18個幫你簡化代碼的Python技巧,感興趣的可以了解一下
    2022-07-07
  • pyQt4實現俄羅斯方塊游戲

    pyQt4實現俄羅斯方塊游戲

    這篇文章主要為大家詳細介紹了pyQt4實現俄羅斯方塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Django與遺留的數據庫整合的方法指南

    Django與遺留的數據庫整合的方法指南

    這篇文章主要介紹了Django與遺留的數據庫整合的方法指南,Django是最具人氣的Python開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • django之用戶、用戶組及權限設置方式

    django之用戶、用戶組及權限設置方式

    這篇文章主要介紹了django之用戶、用戶組及權限設置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python多個MP4合成視頻的實現方法

    Python多個MP4合成視頻的實現方法

    最近接觸了個項目,需要把多個文件合成一個視頻,本文主要使用Python把多個MP4合成視頻,感興趣的可以了解一下
    2021-07-07

最新評論

琼海市| 横山县| 新田县| 周宁县| 新邵县| 龙州县| 凉山| 梧州市| 广灵县| 卢龙县| 松溪县| 甘德县| 三明市| 长兴县| 惠来县| 铁岭县| 阜阳市| 东莞市| 阳西县| 四川省| 阿克陶县| 萝北县| 积石山| 邢台县| 昌宁县| 修水县| 双牌县| 南开区| 卢氏县| 枣庄市| 扬州市| 宿州市| 土默特左旗| 石泉县| 汉沽区| 普格县| 广州市| 孙吴县| 城口县| 乌拉特中旗| 锦州市|