我在Python的Queue模块中看到了这个默认值:
def _put(self, item, heappush=heapq.heappush):
heappush(self.queue, item)
def _get(self, heappop=heapq.heappop):
return heappop(self.queue)
我想知道为什么变量在这里被用作函数参数?这仅仅是品味还是某种优化?
答案 0 :(得分:4)
这是微观优化。默认值仅在函数定义时计算一次,并且本地(包括参数)的访问速度比全局变量快一些,它们实现为C数组查找而不是dict
查找。它还允许避免重复查找heappush
的{{1}}和heappop
成员,而不会通过直接拉入命名空间来污染命名空间。
Timeit片段:
heapq