水木社区手机版
首页
|版面-Python的自由天空(Python)|
新版wap站已上线
返回
1/1
|
转到
主题:求教:关于函数对象和缺省参数
楼主
|
lazyfintech
|
2023-12-28 19:43:43
|
展开
翻历史贴,偶然发现一个帖子,自己不明白了
求教该如何理解
>>> def f(a, l = []):
... l.append(a)
... return l
...
>>> f(1)
[1]
>>> f(2)
[1, 2]
>>> f(1)
[1, 2, 1]
>>> f(1,[])
[1]
>>> f(2)
[1, 2, 1, 2]
>>> f(3,[])
[3]
>>> f(3)
[1, 2, 1, 2, 3]
>>>
--
FROM 111.196.167.*
2楼
|
lazyfintech
|
2023-12-28 19:48:27
|
展开
不明白的是,列表缺省参数是[],为什么每次调用会使用之前的list
不知道老外有没有这块儿的说明
【 在 dabada 的大作中提到: 】
: 每次带列表参数,就会重新申请地址
:
--
FROM 111.196.167.*
5楼
|
lazyfintech
|
2023-12-29 10:29:17
|
展开
多谢楼上各位
--
FROM 111.196.167.*
8楼
|
lazyfintech
|
2023-12-30 08:31:31
|
展开
也是根据前面的回复这么想的
函数对象创建后,内存空间确定了,默认参数对应的空间也确定了
上面的回帖提到默认参数只初始化一次,这么理解后面调用就不会再重置了
【 在 olddognewwit 的大作中提到: 】
: 刚看了觉得有点奇怪,其实如果换成c++就好理解了。对比一下假如默认参数是一个指针,指向一个已分配空间的地址,那么每次调用都有可能改变这个指针所指向的内容的值。
--
FROM 111.196.167.*
9楼
|
lazyfintech
|
2023-12-30 08:32:02
|
展开
谢谢
【 在 giftcard1 的大作中提到: 】
: def f(a, l = None):
: if l == None:
: l = []
: ...................
--
FROM 111.196.167.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版