python - 为什么在这个例子中函数变量没有正确初始化?
问题描述
执行以下代码:
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()
三次返回相同的值,而显然变量初始化应该每次都创建新的 [] 对象。你能给我解释一下吗?
解决方案
推荐阅读
- c - 为什么我不能将此数组传递和编辑给函数?
- rest - REST GET 的 HTTP 响应代码 - 未找到子资源(但未由标识符引用)
- nginx - 无法从外部访问 nginx
- javascript - 如何限制 contenteditable div 中的行数
- mysql - 我应该如何存储另一个表的行以便在前端有统计数据?
- node.js - 分布式计算,启动时在一台服务器上运行代码
- ios - 识别出faceId后如何导航到另一个页面?
- excel - 如何修复“类不支持自动化或不支持预期接口”
- php - Laravel Dusk - 无法连接到 localhost 端口 9515:连接被拒绝
- c - 请告知我不涉及哪种情况