Python:默认参数值与全局变量

时间:2014-03-27 22:05:30

标签: python function arguments

我在Python的Queue模块中看到了这个默认值:

def _put(self, item, heappush=heapq.heappush):
    heappush(self.queue, item)

def _get(self, heappop=heapq.heappop):
    return heappop(self.queue)

我想知道为什么变量在这里被用作函数参数?这仅仅是品味还是某种优化?

1 个答案:

答案 0 :(得分:4)

这是微观优化。默认值仅在函数定义时计算一次,并且本地(包括参数)的访问速度比全局变量快一些,它们实现为C数组查找而不是dict查找。它还允许避免重复查找heappush的{​​{1}}和heappop成员,而不会通过直接拉入命名空间来污染命名空间。

Timeit片段:

heapq