Python小知识——工厂函数

工厂函数,或者说闭包,是能够记住嵌套作用域的变量值的函数。尽管类是最适合用作记忆状态的,因为它们通过属性赋值让这个过程变得很明了,但是,像工厂函数也提供了一种替代的解决方法。

例如,工厂函数有时候用于需要及时生成事件处理、实时对不同情况进行反馈的程序中(例如,用户的输入时无法进行预测的)。

>>>def maker(N):
...    def action(x):               # Make and return action
...        return x ** N            # action retains N from enclosing scope
...    return action
...
这定义了一个外部的函数,这个函数简单地生成并返回了一个嵌套的函数。

>>>f = maker(2)
>>>f
<function action at 0x014720B0>
我们得到的是生成的内嵌函数的一个引用。这个内嵌函数式通过运行内嵌的def而创建的。如果现在调用从外部得到的那个函数:

>>>f(3)
9
>>>f(4)
16
它将会调用内嵌的函数。也就是说,maker函数内部的名为action的函数。这一部分最不平常的就是,内嵌的函数记住了整数2,即maker函数内部的变量N的值,尽管在调用执行f时maker已经返回来值并退出。实际上,在本地作用域内的N被作为执行的状态信息保留了下来࿰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值