python中 列表append方法和"+"在定义函数时为什么表现的不一样,为什么?

作者站长头像
站长
· 阅读数 16

题目描述

列表append方法和"+"在定义函数时为什么表现的不一样,为什么?

题目来源及自己的思路

在看入门视频时看到说定义函数关于默认参数最好用不可变对象的问题,然后举例,

def zxc(a, b=[]):
    b.append(a)
    print(b)


zxc(1)  # [1]
zxc(2)  # [1, 2]

这个理解就是append方法改变了b然后再调用就会把新的值作为默认参数传递给下一次调用函数.然后我试着用"+" 来改变b,结果却不一样了

相关代码

""" 当b=[]=================注意这两个函数b.append(a)和b=b+[a]的区别  为什么"""


def zxc(a, b=[]):
    b.append(a)
    print(b)


zxc(1)  # [1]
zxc(2)  # [1, 2]


def asd(a, b=[]):
    b = [a] + b
    print(b)


asd(1)  # [1]
asd(2)  # [2]


""" 当b=[]==================注意这两个函数b.append(a)和b=b+[a]的区别  为什么"""

你期待的结果是什么?实际看到的错误信息又是什么?

回复
1个回答
avatar
test
2024-07-20

只要出现的 b = b 就不再是原来的 b

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容