Python作用域用法實例詳解
本文實例分析了Python作用域用法。分享給大家供大家參考,具體如下:
每一個編程語言都有變量的作用域的概念,Python也不例外,以下是Python作用域的代碼演示:
def scope_test(): def do_local(): spam = "local spam" def do_nonlocal(): nonlocal spam spam = "nonlocal spam" def do_global(): global spam spam = "global spam" spam = "test spam" do_local() print("After local assignment:", spam) do_nonlocal() print("After nonlocal assignment:", spam) do_global() print("After global assignment:", spam) scope_test() print("In global scope:", spam)
程序的輸出結(jié)果:
After local assignment: test spam After nonlocal assignment: nonlocal spam After global assignment: nonlocal spam In global scope: global spam
注意: local 賦值語句是無法改變 scope_test 的 spam 綁定。 nonlocal 賦值語句改變了 scope_test 的 spam 綁定,并且 global 賦值語句從模塊級改變了 spam 綁定。
其中,nonlocal是Python 3新增的關(guān)鍵字。
你也可以看到在 global 賦值語句之前對 spam 是沒有預(yù)先綁定的。
小結(jié):
遇到在程序中訪問全局變量并且要修改全局變量的值的情況可以使用:global關(guān)鍵字,在函數(shù)中聲明此變量是全局變量
nonlocal關(guān)鍵字用來在函數(shù)或其他作用域中使用外層(非全局)變量。
global關(guān)鍵字很好理解,其他語言大體也如此。這里再舉一個nonlocal的例子:
def make_counter(): count = 0 def counter(): nonlocal count count += 1 return count return counter def make_counter_test(): mc = make_counter() print(mc()) print(mc()) print(mc())
運行結(jié)果:
1 2 3
轉(zhuǎn)自:小談博客 http://www.tantengvip.com/2015/05/python-scope/
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python django下載大的csv文件實現(xiàn)方法分析
這篇文章主要介紹了python django下載大的csv文件實現(xiàn)方法,結(jié)合實例形式分析了Django框架下載csv大文件的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-07-07Python Logging 日志記錄入門學(xué)習(xí)
這篇文章主要介紹了Python Logging 日志記錄入門學(xué)習(xí),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06Python TCP全連接攻擊中SockStress全連接攻擊詳解
Sock Stress 全連接攻擊屬于TCP全連接攻擊,因為需要建立一次完整的TCP三次握手,該攻擊的關(guān)鍵點就在于,攻擊主機將windows窗口緩沖設(shè)置為0,實現(xiàn)的拒絕服務(wù)2022-10-10解決Python內(nèi)層for循環(huán)如何break出外層的循環(huán)的問題
今天小編就為大家分享一篇解決Python內(nèi)層for循環(huán)如何break出外層的循環(huán)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python numpy矩陣信息說明,shape,size,dtype
這篇文章主要介紹了python numpy矩陣信息說明,shape,size,dtype,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05