19 如何理解这个变量问题 print已注释

def func(ls=[]):
    ls.append(1)
    return ls
a = func()
print(a)   ### [1]
b = func()
print(a,b) ### [1, 1] [1, 1]



请先 登录 后评论

最佳答案 2021-09-23 23:04

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. # []
复制代码
请先 登录 后评论

其它 3 个回答

ztruth
>>> 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
请先 登录 后评论
安诺斯诺
>>> c = []
>>> c[:] = func()[:]
4315026312
4315026312
>>> id(c)
4315026248
>>>
请先 登录 后评论
木子丶簫
>>> d = []
>>> d[:] = func([2])[:]
4315248136
4315248136
>>> id(d)
4315248392
>>> id([])
4315026376
>>> id([])
4315026376
>>> id([2])
4315026376
>>>
请先 登录 后评论
  • 5 关注
  • 1 收藏,511 浏览
  • 历经传奇 提出于 2021-09-23 23:04

相似问题