詳解Python作用域用法實例分析

高洛峰
發布: 2017-03-07 15:53:58
原創
1192 人瀏覽過

本文實例分析了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)
登入後複製

程式的輸出結果:

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新增的關鍵字。

你也可以看到在 global 賦值語句之前對 spam 是沒有預先綁定的。

小結:

遇到在程式中存取全域變數並且要修改全域變數的值的情況可以使用:global關鍵字,在函數中宣告此變量是全域變數

nonlocal關鍵字用來在函數或其他作用域中使用外層(非全域)變數。

global關鍵字很好理解,其他語言大體也是如此。這裡再舉一個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())
登入後複製

運行結果:

1
2
3
登入後複製

##更多詳解Python作用域用法實例分析相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板