【发布时间】:2010-12-11 16:34:53
【问题描述】:
我很难理解算法问题的根本原因。然后,通过逐步简化函数,我发现在 Python 中对默认参数的求值并不符合我的预期。
代码如下:
class Node(object):
def __init__(self, children = []):
self.children = children
问题是Node类的每个实例共享相同的children属性,如果属性没有明确给出,例如:
>>> n0 = Node()
>>> n1 = Node()
>>> id(n1.children)
Out[0]: 25000176
>>> id(n0.children)
Out[0]: 25000176
我不明白这个设计决策的逻辑?为什么 Python 设计者决定在定义时评估默认参数?这对我来说似乎非常违反直觉。
【问题讨论】:
-
我的猜测是性能。想象一下,如果每天调用 1500 万次,那么每次调用函数时都要重新评估。
标签: python logic language-design