2017-08-27 14 views
1

我想在下面的代碼中使用python中的nonlocal關鍵字。 inner()包含在outer()中,我想要創建一個計數器變量,它將記住從outer()調用inner()的次數。 ctrouter()中定義爲nonlocalinner()中定義。python中的非本地關鍵字錯誤

但我得到的錯誤爲no binding for nonlocal 'ctr' found

def inner1(): 
    nonlocal ctr 
    ctr=ctr+1 
    print(' ctr= {0}'.format(ctr)) 


def outer1(): 
    ctr=0 
    for i in range(5): 
     inner1() 

outer1() 
+1

在'outer'內調用的'inner()'不等同於'outer'內定義的'inner'。外地人與後者合作。 –

+1

*在非本地語句中列出的名稱,與全局語句中列出的語句不同,必須引用封閉範圍中的預先存在的綁定* ...在封閉範圍中定義的變量在哪裏? –

回答

2

內()被封閉外()

沒有inner不括在outer(的outer範圍內沒有定義),你只叫innerouter;這裏沒有任何關閉。