怎样在函数内定义的函数中访问外层函数的变量?

python 2,不能用 三的nonlocal
我需要在一个函数内定义一个新的函数,且这个内部函数可以访问外部函数的变量
我做了如下尝试,但结果不对: 结果是2 4 6 6 6 6,我希望的结果是2 4 6 6 4 2

def outer(s):
    if s == 4:
        return
    outer.OuterVar = s
    def inner():  #这里不能用lambda因为实际情况下这个函数内部有非常多的内容
        outer.OuterVar = outer.OuterVar * 2
    inner()
    print outer.OuterVar,
    outer(s+1)
    print outer.OuterVar,
if __name__ == "__main__":
    outer(1)

补充说明一下

我希望的代码是这样的,注释掉的代码那行会报错。

def outer(s):
    if s == 4:
        return
    OuterVar = s
    def inner():
        pass
        #OuterVar = OuterVar * 2
    inner()
    print OuterVar,
    outer(s+1)
    print OuterVar,
if __name__ == "__main__":
    outer(1)
阅读 5.6k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题