栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python工厂函数与类的比较

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python工厂函数与类的比较

我最喜欢嵌套函数的地方是,它比类少冗长。与您的maker函数等效的类定义为:

class clsmaker(object):    def __init__(self, N):        self.N = N    def __call__(self, X):        return X * self.N

在您开始向构造函数添加更多参数之前,这似乎并不算糟糕。然后,以类的方式为每个参数增加一行,而函数仅获得额外的args。

事实证明,嵌套函数也具有速度优势:

>>> T1 = timeit.Timer('maker(3)(4)', 'from __main__ import maker')>>> T1.timeit()1.2818338871002197>>> T2 = timeit.Timer('clsmaker(3)(4)', 'from __main__ import clsmaker')>>> T2.timeit()2.2137160301208496

这可能是由于嵌套函数版本中涉及的操作码更少:

>>> dis(clsmaker.__call__)  50 LOAD_FAST     1 (X)   3 LOAD_FAST     0 (self)   6 LOAD_ATTR     0 (N)   9 BINARY_MULTIPLY       10 RETURN_VALUE        >>> act = maker(3)>>> dis(act)  30 LOAD_FAST     0 (X)   3 LOAD_DEREF    0 (N)   6 BINARY_MULTIPLY        7 RETURN_VALUE


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660679.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号