【发布时间】:2018-11-17 01:44:39
【问题描述】:
我对以下代码生成的输出很感兴趣。 谁能向我解释为什么 python 在第三次执行函数调用时打印 [1,5] 而不仅仅是 [5],以及它是 Python 中的功能还是错误?
def funn(arg1, arg2=[]):
arg2.append(arg1)
print(arg2)
funn(1)
funn(2, [3, 4])
funn(5)
【问题讨论】:
-
我相信是因为
arg2在第一次被调用时只被赋予了默认值(空数组)。然后任何不提供值的后续调用将使用最初创建的相同实例。所以第 3 次调用将使用第一次调用中创建的数组,该数组已经附加了1。
标签: python function scope namespaces interpreter