我对将对象传递给方法的两种不同方法进行了基准测试,隐式对象传递比显式方法花费的时间更少。我的书说这些是相同的过程。什么解释了差异?
首先,这是类定义:
class Point:
def reset(self)
self.x = 0
self.y = 0
因此,当我在以下两组代码中的每一个上运行“timeit”时,第一个每个循环返回 317 ns,第二个每个循环返回 400 ns。这是隐式的对象方法传递代码,其中 Python 将对象传递给幕后的方法:
p = Point()
p.reset()
这是明确的替代方案:
p = Point()
Point.reset(p)
有人可以告诉我解释基准差异的内存分配级别发生了什么吗?一种方式比另一种方式更“pythonic”吗?为什么程序员会选择一个而不是另一个(超出速度)?
谢谢,
迈克尔