首页 > 解决方案 > 为什么在这个例子中函数变量没有正确初始化?

问题描述

执行以下代码:

def foo(b=[]):
    b.append(1)
    print(b)
foo()
foo()
foo()

结果出乎意料:

[1]
[1, 1]
[1, 1, 1]

调查不同函数调用的变量“b”内存地址:

def foo(b=[]):
    b.append(1)
    print(id(b))
foo()
foo()
foo()

三次返回相同的值,而显然变量初始化应该每次都创建新的 [] 对象。你能给我解释一下吗?

标签: python

解决方案


推荐阅读