本文實例分析了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 spamAfter nonlocal assignment: nonlocal spamAfter global assignment: nonlocal spamIn 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 counterdef make_counter_test(): mc = make_counter() print(mc()) print(mc()) print(mc())
運行結果:
123
轉自:小談博客 http://www.tantengvip.com/2015/05/python-scope/
希望本文所述對大家Python程序設計有所幫助。