[英]Namespace - scope python
我對LEGB的規則在這里如何適用感到非常困惑。 我知道Local可以位於函數或類方法之內。 可以包含其封閉功能,例如,如果一個功能包裝在另一個功能內。 全局是指執行腳本本身的最高級,而“內置”是Python為其保留的特殊名稱。 我只是不知道它在這里如何應用以及>為什么輸出是它的原樣。謝謝
a = 'global'
def outer():
def len(in_var):
print('called my len() function: ')
l = 0
for i in in_var:
l += 1
return l
a = 'local'
def inner():
global len
nonlocal a
a += ' variable'
inner()
print('a is', a)
print(len(a))
outer()
print(len(a))
print('a is', a)
輸出
('a is', 'local')
called my len() function:
5
15
('a is', 'global variable')
我正在用3.4.2跟蹤結果
a is local variable
called my len() function:
14
6
a is global
對於解釋,其實你有幾乎所有重要的細節,但關鍵的一點是nonlocal
語句導致的標識來指代之前綁定變量在最近的封閉范圍,這意味着a
在inner()
是指,影響a = 'local'
所以之后 print('a is', a)
使用a作為local variable
,長度為14。但是在全局范圍內, a = 'global'
仍然有效。
您能否分享您的環境細節,以便我們調查差異?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.