第一个里面函数是产生一个新的列表
列表属于可变类型,是按引用地址传递的。
当把x列表传递到函数中时,函数内外两个x变量都指向这同一个列表的引用地址。
第二个代码函数中 x+=[4]是把4添加到x列表中,等同x.extend([4])
函数内x变量指向的列表地址没有改变。
函数外x变量中的引用地址所找到的也是这同一个列表,会获取到一样的内容。
而第一个代码函数中 x=x+[4],其中x+[4]是产生一个新的列表,
函数内x变量指向的列表地址改变了,指向新列表的引用地址。
但函数外x变量中的引用地址没有改变,还是指向原来那个列表,获取到的还是原来的内容。
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
这个有点复杂:
这里考察的是可变形的和不可变形模块变量
以及普通+法和原址+法
第一段函数内,x=x+[4] 第一个x是局部变量,第二个是传进来的x,加起来的结果是[1,2,3,4],又赋给了局部变量x
第二段函数内,x+=[4] 这是原址加法 ,[4]直接改变x对象。
以上两段函数,如果列表改成了元组,结果就相同,在函数内不会改变模块变量的值。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!