Python 3.x 我不明白为什么我+=[i] l=l+;[i] 通过引用传递值时给出差异

Python 3.x 我不明白为什么我+=[i] l=l+;[i] 通过引用传递值时给出差异,python-3.x,Python 3.x,l=[](这是列表) ''' def add(a,i):a+=l[i] ''' 加(1,3) 打印(l)>>>它工作,输出[3]。 但是, ''' def add(a,i):a=a+[i] ''' 加(1,3) print(l)>>>>不起作用,给出输出[0],为什么?第二,它定义了一个新的局部值l,而不是写入全局l,使全局l保持不变。第一种方法之所以有效,是因为它没有设置值,默认情况下,该值是函数的本地值 虽然使用global通常被认为是不好的做法,但您可以将第二个选项改为该选项以正常工作 d

l=[](这是列表)

''' def add(a,i):a+=l[i] '''

加(1,3)

打印(l)>>>它工作,输出[3]。 但是,

''' def add(a,i):a=a+[i] '''

加(1,3)


print(l)>>>>不起作用,给出输出[0],为什么?

第二,它定义了一个新的局部值
l
,而不是写入全局
l
,使全局
l
保持不变。第一种方法之所以有效,是因为它没有设置值,默认情况下,该值是函数的本地值

虽然使用
global
通常被认为是不好的做法,但您可以将第二个选项改为该选项以正常工作

def add(l, a):
    global l

    l = l + a
. 还可以考虑将代码放入代码块中,这些代码块从三个这样的背景开始:<代码> ` `/COD>。从…起