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

Python中關鍵字nonlocal和global的聲明與解析

 更新時間:2017年03月12日 11:58:14   作者::Brad1994  
這篇文章主要給大家介紹了關于Python中關鍵字nonlocal和global的聲明與解析的相關資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

一、Python中global與nonlocal 聲明

如下代碼

a = 10 
 
def foo(): 
 a = 100 

執(zhí)行foo() 結果 a 還是10

函數中對變量的賦值,變量始終綁定到該函數的局部命名空間,使用global 語句可以改變這種行為。

>>> a 
10 
>>> def foo(): 
...  global a 
...  a = 100 
... 
>>> a 
10 
>>> foo() 
>>> a 
100 

解析名稱時首先檢查局部作用域,然后由內而外一層層檢查外部嵌套函數定義的作用域,如找不到搜索全局命令空間和內置命名空間。

盡管可以層層向外(上)查找變量,但是! ..python2 只支持最里層作用域(局部變量)和全局命令空間(gloabl),也就是說內部函數不能給定義在外部函數中的局部變量重新賦值,比如下面代碼是不起作用的

def countdown(start): 
 n = start 
 def decrement(): 
  n -= 1 

python2 中,解決方法可以是是把修改值放到列表或字典中,python3 中,可以使用nonlocal 聲明完成修改

def countdown(start): 
 n = start 
 def decrement(): 
  nonlocal n 
  n -= 1 

二、Python nonlocal 與 global 關鍵字解析

nonlocal

首先,要明確 nonlocal 關鍵字是定義在閉包里面的。請看以下代碼:

x = 0
def outer():
 x = 1
 def inner():
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)

結果

# inner: 2
# outer: 1
# global: 0

現在,在閉包里面加入nonlocal關鍵字進行聲明:

x = 0
def outer():
 x = 1
 def inner():
  nonlocal x
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)

結果

# inner: 2
# outer: 2
# global: 0

看到區(qū)別了么?這是一個函數里面再嵌套了一個函數。當使用 nonlocal 時,就聲明了該變量不只在嵌套函數inner()里面
才有效, 而是在整個大函數里面都有效。

global

還是一樣,看一個例子:

x = 0
def outer():
 x = 1
 def inner():
  global x
  x = 2
  print("inner:", x)

 inner()
 print("outer:", x)

outer()
print("global:", x)

結果

# inner: 2
# outer: 1
# global: 2

global 是對整個環(huán)境下的變量起作用,而不是對函數類的變量起作用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • 在python中的socket模塊使用代理實例

    在python中的socket模塊使用代理實例

    這篇文章主要介紹了在python中的socket模塊使用代理實例,調用socks.setdefaultproxy即可實現,需要的朋友可以參考下
    2014-05-05
  • python3設計模式之簡單工廠模式

    python3設計模式之簡單工廠模式

    這篇文章主要為大家詳細介紹了python3設計模式之簡單工廠模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • OneFlow源碼解析之Eager模式下Tensor存儲管理

    OneFlow源碼解析之Eager模式下Tensor存儲管理

    這篇文章主要為大家介紹了OneFlow源碼解析之Eager模式下Tensor的存儲管理實現示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • python實現逆波蘭計算表達式實例詳解

    python實現逆波蘭計算表達式實例詳解

    這篇文章主要介紹了python實現逆波蘭計算表達式的方法,較為詳細的分析了逆波蘭表達式的概念及實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Python實現模擬瀏覽器請求及會話保持操作示例

    Python實現模擬瀏覽器請求及會話保持操作示例

    這篇文章主要介紹了Python實現模擬瀏覽器請求及會話保持操作,結合實例形式分析了Python基于urllib與urllib2模塊模擬瀏覽器請求及cookie保存會話相關操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python 實現Numpy中找出array中最大值所對應的行和列

    Python 實現Numpy中找出array中最大值所對應的行和列

    今天小編就為大家分享一篇Python 實現Numpy中找出array中最大值所對應的行和列,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python如何快速下載依賴

    Python如何快速下載依賴

    本文介紹了四種在Python中快速下載依賴的方法,包括使用國內鏡像源、開啟pip并發(fā)下載功能、使用pipreqs批量下載項目依賴以及使用conda管理依賴,通過這些方法,可以有效提升Python項目的依賴下載速度
    2025-03-03
  • Python打印不合法的文件名

    Python打印不合法的文件名

    這篇文章主要介紹了Python打印不合法的文件名,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下的相關資料
    2020-07-07
  • python保存網頁圖片到本地的方法

    python保存網頁圖片到本地的方法

    這篇文章主要為大家詳細介紹了python保存網頁圖片到本地的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 在Python中通過機器學習實現人體姿勢估計

    在Python中通過機器學習實現人體姿勢估計

    姿態(tài)檢測是計算機視覺領域的一個活躍研究領域。這篇文章將為大家介紹在Python中如何利用機器學習進行人體姿勢估計,感興趣的小伙伴可以了解一下
    2021-12-12

最新評論

普格县| 通江县| 湟中县| 宜兰市| 天镇县| 永春县| 商丘市| 永平县| 乐亭县| 山西省| 前郭尔| 四平市| 石家庄市| 穆棱市| 安平县| 贺兰县| 寻甸| 汽车| 阿勒泰市| 宁武县| 博野县| 正蓝旗| 收藏| 永宁县| 马山县| 舞钢市| 海安县| 鸡东县| 开化县| 龙游县| 日土县| 濮阳县| 四平市| 西吉县| 崇阳县| 平定县| 永福县| 福建省| 台东市| 镇康县| 安福县|