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

詳解python函數(shù)的閉包問題(內部函數(shù)與外部函數(shù)詳述)

 更新時間:2019年05月17日 08:35:21   作者:AngelovLee  
這篇文章主要介紹了python函數(shù)的閉包問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

python函數(shù)的閉包問題(內嵌函數(shù))

>>> def func1():
...   print ('func1 running...')
...   def func2():
...       print ('func2 running...')
...   func2()
... 
>>> func1()
func1 running...
func2 running...

內部函數(shù)func2作用域都在外部函數(shù)func1作用域之內
如果試圖在外部函數(shù)的外部調用內部函數(shù)將會報錯

>>> func2()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'func2' is not defined

關于python的閉包問題

如果試圖在一個內部函數(shù)里對外部作用域(不包括外部函數(shù)的外部作用域)的變量進行引用,內部函數(shù)就會被認為是閉包

>>> def FuncX(x):
...   def FuncY(y):
...       return x*y
...   return FuncY

對于FuncY函數(shù)來說,對在FuncX函數(shù)的整個作用域(FuncY函數(shù)的非全局作用域的外部作用)的變量x進行引用,自此就可以說FuncY函數(shù)就是所謂的閉包

>>> f = FuncX(8)
>>> f
<function FuncY at 0x7f3a436fc2a8>
>>> type(f)
<type 'function'>
>>> f(10)
80
>>> FuncX(7)(8)
56

由于閉包本身是基于內部函數(shù)這一概念而來,所以不能在外部函數(shù)的外部作用域對內部函數(shù)進行調用

>>> FuncY(8)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'FuncY' is not defined

既然是基于內部函數(shù)這一概念而來,自然對于內部函數(shù)來說對引用外部函數(shù)作用域內的變量進行修改,將會啟動解釋器的屏蔽機制

>>> def Func1():
...   x = 233
...   def Func2():
...       x *=x
...       return x
...   return Func2()
... 
>>> Func1()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 6, in Func1
 File "<stdin>", line 4, in Func2
UnboundLocalError: local variable 'x' referenced before assignment

x*=x的左值此時是內部函數(shù)作用域里的變量,此時試圖將沒有定義的數(shù)據(jù)進行平方操作,因此報錯

>>> def Func1():
...   x = 233
...   def Func2():
...       x = 321
...       return x
...   return Func2()
... 
>>> Func1()
321

內部函數(shù)創(chuàng)建x變量并且屏蔽外部函數(shù)作用域內的x變量

python3之前的解決辦法

應用容器類型(list,tuple之類的)存放外部函數(shù)作用域的變量從而不會被屏蔽機制屏蔽掉,因為容器類型不是存放在棧里面

>>> def Func1():
...   x = [233]
...   def Func2():
...       x[0] *= x[0]
...       return x[0]
...   return Func2()
... 
>>> Func1()
54289

python3之后的解決辦法:nonlocal關鍵字

>>> def Func1():
...   x = 233
...   def Func2():
...   nonlocal x
...       x *= x
...       return x
...   return Func2()
... 
>>> Func1()
54289

以上所述是小編給大家介紹的python函數(shù)的閉包問題詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • pytorch如何實現(xiàn)邏輯回歸

    pytorch如何實現(xiàn)邏輯回歸

    這篇文章主要介紹了pytorch如何實現(xiàn)邏輯回歸問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 對Tensorflow中的變量初始化函數(shù)詳解

    對Tensorflow中的變量初始化函數(shù)詳解

    今天小編就為大家分享一篇對Tensorflow中的變量初始化函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python爬蟲之Selenium中frame/iframe表單嵌套頁面

    Python爬蟲之Selenium中frame/iframe表單嵌套頁面

    這篇文章主要介紹了Python爬蟲之Selenium中frame/iframe表單嵌套頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python中免驗證跳轉到內容頁的實例代碼

    Python中免驗證跳轉到內容頁的實例代碼

    在本篇文章里小編給大家整理的是一篇關于Python中免驗證跳轉到內容頁的實例代碼,有興趣的朋友們可以學習分享下。
    2020-10-10
  • 讓Python程序定時執(zhí)行的8種方法整理

    讓Python程序定時執(zhí)行的8種方法整理

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務,一種方式是采用?Linux?系統(tǒng)自帶的?crond?結合命令行實現(xiàn),另外一種方式是直接使用Python。本文整理了一下?Python?定時任務的實現(xiàn)方式,希望對大家有所幫助
    2023-01-01
  • Python繪制線圖之plt.plot()的介紹以及使用

    Python繪制線圖之plt.plot()的介紹以及使用

    在Python中plt.plot是matplotlib庫中的一個函數(shù),用于繪制點和線,并對其樣式進行控制,下面這篇文章主要給大家介紹了關于Python繪制線圖之plt.plot()的介紹以及使用的相關資料,需要的朋友可以參考下
    2023-12-12
  • 如何利用Python快速統(tǒng)計文本的行數(shù)

    如何利用Python快速統(tǒng)計文本的行數(shù)

    這篇文章主要介紹了如何利用Python快速統(tǒng)計文本的行數(shù),要快速統(tǒng)計一個文本文件中的行數(shù),其實就是要統(tǒng)計這個文本文件中換行符的個數(shù),下面我們就一起進入文章看看具體的操作過程吧
    2021-12-12
  • python命令行參數(shù)argparse模塊基本用法詳解

    python命令行參數(shù)argparse模塊基本用法詳解

    argparse?是python自帶的命令行參數(shù)解析包,可以用來方便地讀取命令行參數(shù),這篇文章主要介紹了python命令行參數(shù)-argparse模塊基本用法,需要的朋友可以參考下
    2023-01-01
  • 跟老齊學Python之大話題小函數(shù)(1)

    跟老齊學Python之大話題小函數(shù)(1)

    今天本講要講什么呢?今天要介紹幾個python中的小函數(shù),這幾個函數(shù)都是從函數(shù)式編程借鑒過來的,它們就是:filter、map、reduce、lambda、yield 有了它們,最大的好處是程序更簡潔
    2014-10-10
  • Python實現(xiàn)字典按照value進行排序的方法分析

    Python實現(xiàn)字典按照value進行排序的方法分析

    這篇文章主要介紹了Python實現(xiàn)字典按照value進行排序的方法,結合實例形式分析了Python字典按照value進行排序的相關操作技巧,需要的朋友可以參考下
    2017-12-12

最新評論

克什克腾旗| 宜城市| 涟源市| 肇州县| 太仓市| 左权县| 武夷山市| 辽阳县| 邢台市| 绥中县| 临猗县| 安西县| 铁岭市| 涡阳县| 且末县| 儋州市| 南汇区| 澄迈县| 南京市| 武平县| 乐业县| 兴文县| 华容县| 金溪县| 陇南市| 南开区| 磐石市| 阜平县| 武乡县| 禄丰县| 黄冈市| 固安县| 漳平市| 禄劝| 沁水县| 西乡县| 宜州市| 开鲁县| 综艺| 渑池县| 祁东县|