Python在嵌套函数内部访问并父级函数的变量

主要来自stackoverflow上的解答http://stackoverflow.com/questions/6198709/how-do-i-change-nesting-functions-variable-in-the-nested-function


 
def accessVarFromNestedFunc():
    localVarInParent = [1]; #here just define a list, first value is what we want to use
     
    def nestedFunc(): #
        localVarInParent[0] = localVarInParent[0] + 1 ; # localVarInParent[0] is the first value of above list value: localVarInParent, and its initial value is 1
        print "In nested func, localVarInParent[0]=",localVarInParent[0];#2,3,4,5,6
     
    for i in range(5):
        nestedFunc();
    # here can got value is 6, which is changed after nested function
    print "In current parent nesting func, localVarInParent[0]=",localVarInParent[0]; #In current parent nesting func, localVarInParent[0]= 6
     
if __name__ == "__main__":
    accessVarFromNestedFunc();

也即:

Python中,嵌套函数内部去操作被嵌套的父级函数中的变量的话:

  • Python 2.x:把变量弄进一个列表中的第1个值,index=0,然后就可以在嵌套函数中,获得该list列表变量,操作其中第1个值了。
  • Python 3.x:把变量定义为nonlocal即可。

没有更多推荐了,返回首页