我正在按照此功能进行一些实验:Hidden features of Python
使用的代码是:
def f(x = []):
x.append(x)
return x
输出是:
>>> f()
[[...]]
我想了解[...]
的含义以及生成无限嵌套列表的原因。
答案 0 :(得分:1)
将一个列表附加到自身将构成一个循环结构,[...]
意味着无限地重复它。
答案 1 :(得分:0)
您必须了解函数默认值在首次创建函数时计算,而不是在运行时计算。首先,您的代码等同于:
X = []
def f(x=X):
x.append(x)
return x
如果你只运行一次,那么这相当于:
X = []
X.append(X)
创建一个列表,然后将自己设置为第一个元素。因此,从X == X[0]
开始,X == X[0][0]
和X == X[0][0]...[0]
。