开发者社区> 问答> 正文

访问闭包中定义的变量

你想要扩展函数中的某个闭包,允许它能访问和修改函数的内部变量。

展开
收起
哦哦喔 2020-04-17 13:56:19 722 0
1 条回答
写回答
取消 提交回答
  • 通常来讲,闭包的内部变量对于外界来讲是完全隐藏的。 但是,你可以通过编写访问函数并将其作为函数属性绑定到闭包上来实现这个目的。例如:
    
    def sample():
        n = 0
        # Closure function
        def func():
            print('n=', n)
    
        # Accessor methods for n
        def get_n():
            return n
    
        def set_n(value):
            nonlocal n
            n = value
    
        # Attach as function attributes
        func.get_n = get_n
        func.set_n = set_n
        return func
    下面是使用的例子:
    
    >>> f = sample()
    >>> f()
    n= 0
    >>> f.set_n(10)
    >>> f()
    n= 10
    >>> f.get_n()
    10
    >>>
    
    2020-04-17 13:56:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
函数对象 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载