首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:为什么函数中的对象返回不同的id(),取决于它的调用方式?

Python:为什么函数中的对象返回不同的id(),取决于它的调用方式?
EN

Stack Overflow用户
提问于 2018-03-22 21:32:23
回答 1查看 65关注 0票数 1

我正在尝试用不同的参数调用函数。现在,我从Python (Python教程4.7.1 )中了解了这一点。定义函数)--函数累加在后续调用时传递给它的参数。由于这一点,在第一次调用之后,我期望函数中的list对象的id()保持不变,但它不是。为什么id()'s不同?

代码语言:javascript
复制
def f(a, L=[]):
    print(id(L))
    L.append(a)
    return L

>>> f(1)

2053668960840
[1]

>>> f(1)

2053668960840
[1, 1]

>>> f(1,[9])

2053668961032
[9, 1]

>>> f(1,[9])

2053669026888
[9, 1]

>>> f(1,[9])

2053668961032
[9, 1]

>>> f(1,[9])

2053669026888
[9, 1]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-22 21:35:54

默认参数在创建时绑定到函数,它始终是内存中的同一个对象。这就是为什么每次调用函数时都会看到相同的id,而不提供第二个参数。

当使用第二个参数调用函数时,在刚刚创建的列表中,在执行任何其他代码之前,赋值L=<list called with>隐式地发生在函数体内。在本例中,您可以看到新创建的列表的id

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49438837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档