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())
運(yùn)行結(jié)果:
1 2 3
轉(zhuǎn)自:小談博客 http://www.tantengvip.com/2015/05/python-scope/
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python format補(bǔ)0的實現(xiàn)方法
對于一些數(shù)字的處理,我們可能需要讓它們滿足一定格式的要求,本文主要介紹了Python format補(bǔ)0的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
詳解python statistics模塊及函數(shù)用法
本節(jié)介紹 Python 中的另一個常用模塊 —— statistics模塊,該模塊提供了用于計算數(shù)字?jǐn)?shù)據(jù)的數(shù)理統(tǒng)計量的函數(shù)。這篇文章重點(diǎn)給大家介紹python statistics 模塊的一些用法,感興趣的朋友跟隨小編一起看看吧2019-10-10
利用python對Excel中的特定數(shù)據(jù)提取并寫入新表的方法
今天小編就為大家分享一篇利用python對Excel中的特定數(shù)據(jù)提取并寫入新表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
如何基于Python + requests實現(xiàn)發(fā)送HTTP請求
這篇文章主要介紹了如何基于Python + requests實現(xiàn)發(fā)送HTTP請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01
Pycharm無法使用已經(jīng)安裝Selenium的解決方法
今天小編就為大家分享一篇Pycharm無法使用已經(jīng)安裝Selenium的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
pytorch如何凍結(jié)某層參數(shù)的實現(xiàn)
這篇文章主要介紹了pytorch如何凍結(jié)某層參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Django Form 實時從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作方法
這篇文章主要介紹了Django Form 實時從數(shù)據(jù)庫中獲取數(shù)據(jù)的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07
PHP webshell檢查工具 python實現(xiàn)代碼
Web安全應(yīng)急響應(yīng)中,不免要檢查下服務(wù)器上是否被上傳了webshell,手工檢查比較慢,就寫了個腳本來檢查了。Windows平臺下已經(jīng)有了lake2寫的雷克圖的了,一般的檢查也夠用了,寫了個Linux下面的,用python寫的。2009-09-09

