python工厂函数与类的比较

python工厂函数与类的比较,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5666795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存