python的入门22

工厂函数

1、什么是工厂函数

工厂函数是用于生成特定数据类型的新数据项的函数。

因为现实世界中“工厂”生产制造物品,所以用类比的方法,“工厂函数”制造对象。

所谓工厂函数就是指这些内建函数都是类对象, 当你调用它们时,实际上是创建了一个类实例。

举例:

(1)set(),创造新的集合 set。

(2)dict(),创造新的字典 dict。

(3)people(), 创造一个新的人对象。(咦,这也是工厂函数吗?)

是的,在 《Head First Python》 一书中,作者 Paul Barry 称 p=people() 这种调用方式为工厂函数调用(factory function call)。实际上,Python 在处理这行代码时,会将工厂函数调用转化为如下调用:people().init(a)。

1、它是一个函数。

2、它用来创建对象。

3、它像工厂一样,“生产”出来的函数都是“标准件”(拥有同样的属性)

2、工厂函数和类有什么关系?

在 Python 中,函数和类通常可以互换,因为二者都是可调用的对象,而且没有实例化对象的new运算符,**所以调用构造方法与调用工厂函数没有区别。**此外,只要能放回新的可调用对象,代替被装饰的函数,二者都可以用作装饰器。

3、工厂函数的应用

例子:

class Try_int(int):
    def __add__(self, other):
        return int.__sub__(self, other)
    def __sub__(self, other):
        return int.__add__(self, other)
a=Try_int(3)
b=Try_int(5)
print(a+b)
print(a-b)

输出结果为:
在这里插入图片描述
这是因为通过一个工厂函数把‘+’和‘-’号互换了意义。

4、工厂函数的意义

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

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

def make(N):
    def action(a):
        return N**a
    return action
f=make(2)
print(f)

这定义了一个外部的函数,这个函数简单地生成并返回了一个嵌套的函数。
输出结果为:
在这里插入图片描述
我们得到的是生成的内嵌函数的一个引用。这个内嵌函数式通过运行内嵌的def而创建的。如果现在调用从外部得到的那个函数:

print(f(2))
print(f(4))

输出结果为:

在这里插入图片描述
它将会调用内嵌的函数。也就是说,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、付费专栏及课程。

余额充值