Discuss / Python / 好吧,有个问题,为什么外部的序列可以直接调用,而外部的变量(比如n=0)需要nonlocal

好吧,有个问题,为什么外部的序列可以直接调用,而外部的变量(比如n=0)需要nonlocal

Topic source

_盛盛_

#1 Created at ... [Delete] [Delete and Lock User]

def createCounter(): L = [0] def count(): L[0] = L[0] + 1 return L[0] return count

开始我也不懂,看了几个网页才弄明白,内部函数可以引用外部函数的变量,但不能修改,需要nonlocal申明才能修改,而应用容器类型(list,tuple之类的)存放外部函数作用域的变量不会被屏蔽机制屏蔽掉,因为容器类型不是存放在栈里面。


  • 1

Reply