[英]With Python 3.6, why can't I write like this?
def fun():
i = 1
def foo():
i = i + 1
return i
第4行中的第二個“ i”未解析,請告訴我為什么? 謝謝!
您需要讓python知道i
不是foo
的局部變量。 默認情況下,如果您在函數內設置變量(如此處使用i = i + 1
),則假定它是局部變量。
因此,添加nonlocal i
可以聲明i
在此范圍之外,並在其關閉范圍內。
def fun():
i = 1
def foo():
nonlocal i
i = i + 1
return i
# presumably you want to return foo as well ...
return foo
現在,讓我們測試一下:
>>> z = fun()
>>> z()
2
>>> z()
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.