找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2667|回复: 4

[求助] 如何理解这个变量问题 print已注释

1

主题

1

帖子

1

积分

贫民

积分
1
ecnuwjn 发表于 2019-11-18 22:33:03 | 显示全部楼层 |阅读模式
def func(ls=[]):
    ls.append(1)
    return ls
a = func()
print(a)   ### [1]
b = func()
print(a,b) ### [1, 1] [1, 1]


回复

使用道具 举报

0

主题

16

帖子

16

积分

贫民

积分
16
edo 发表于 2019-11-20 20:31:34 | 显示全部楼层
>>> def func(l=[]):
...     print(id(l))
...     l.append(1)
...     print(id(l))
...     return l
...
>>> a = func()
4315026312
4315026312
>>> id(a)
4315026312
>>> b = func()
4315026312
4315026312
>>> id(b)
4315026312
回复 支持 反对

使用道具 举报

0

主题

16

帖子

16

积分

贫民

积分
16
edo 发表于 2019-11-20 20:38:16 | 显示全部楼层
>>> c = []
>>> c[:] = func()[:]
4315026312
4315026312
>>> id(c)
4315026248
>>>
回复 支持 反对

使用道具 举报

0

主题

16

帖子

16

积分

贫民

积分
16
edo 发表于 2019-11-20 20:46:53 | 显示全部楼层
>>> d = []
>>> d[:] = func([2])[:]
4315248136
4315248136
>>> id(d)
4315248392
>>> id([])
4315026376
>>> id([])
4315026376
>>> id([2])
4315026376
>>>
回复 支持 反对

使用道具 举报

0

主题

102

帖子

102

积分

侠客

积分
102
傻眼貓咪 发表于 2021-8-6 13:00:10 | 显示全部楼层
Python 編程語言中的四種集合數據類型:
列表(list),元組(tuple),集(set) 字典(dictionary)
如果想採用這四種集合的其中一種做默認參數必定會出現你說描述的問題

解決方法如下:
  1. def func(myList = None): # 不能先定義形態
  2.     myList = [] # 這裡開始定義形態
  3.     print(myList)
  4.     myList.append(1)

  5. func()
  6. func()
  7. func()

  8. # 列印出:

  9. # []
  10. # []
  11. # []
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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