找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3587|回复: 3

[讨论] python 函数使用default形参问题

7

主题

15

帖子

15

积分

贫民

积分
15
z2807866996 发表于 2018-3-14 14:47:44 | 显示全部楼层 |阅读模式
  1. def foo(a=[]):   
  2.     a.append("baz")
  3.     return a

  4. foo()     >  a = ["baz"]
  5. foo()     >  a = ["baz","baz"]
  6. foo()     >  a = ["baz","baz","baz"]
复制代码

根据代码而言,每次调用foo函数,由于没有入参,那应该默认使用default参数,应该每次运行结果都是["baz"], 但是为什么会一直递增,是什么情况????

回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2018-3-14 16:07:18 | 显示全部楼层
本帖最后由 uitb 于 2018-3-14 16:10 编辑

QQ截图20180314160923.png
又是一个python的坑啊,都不知道我又没有遇到过这种情况还没找到原因的呢
看样子默认参数都指向同一块内存地址的,没自己传入参数的时候永远都指向那一块,所以那个列表就一直边长咯

回复 支持 1 反对 0

使用道具 举报

0

主题

11

帖子

11

积分

贫民

积分
11
小数点儿 发表于 2018-3-15 00:16:04 | 显示全部楼层
可变对象做默认参数就跳进了坑
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2018-3-15 19:17:28 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表