Python参数传递和可变性
示例
首先,一些术语:
参数(实际参数):传递给函数的实际变量;
参数(形式参数):函数中使用的接收变量。
在Python中,参数是通过赋值传递的(与其他语言相反,在其他语言中,参数可以通过值/引用/指针传递)。
修改参数会修改参数(如果参数的类型是可变的)。
deffoo(x): #这里x是参数
x[0]=9 #这会使由x和y标记的列表发生突变
print(x)
y=[4,5,6]
foo(y) #以y为参数调用foo
#出:[9、5、6] #x标记的列表已被突变
print(y)
#出:[9、5、6] #标记为y的列表也已被突变
重新分配参数不会重新分配参数。
deffoo(x): #这里x是参数,whenwecallfoo(y)weassignytox
x[0]=9 #这会使由x和y标记的列表发生突变
x=[1,2,3] #x现在正在标记其他列表(y不受影响)
x[2]=8 #这会改变x的列表,而不是y的列表
y=[4,5,6] #y是参数,x是参数
foo(y) #Pretendthatwewrote"x=y",thengotoline1
y
#出:[9、5、6]
在Python中,我们实际上并未为变量分配值,而是将变量(被视为name)绑定(即分配,附加)到对象。
不可变:整数,字符串,元组等。所有操作都会进行复印。
可变的:列表,字典,集合等。操作可能会发生变异,也可能不会发生变异。
x = [3, 1, 9] y = x x.append(5) #更改以x和y标记的列表,x和y都绑定到[3,1,9] x.sort() #突变由x和y标记的列表(就地排序) x = x + [4] #不更改列表(仅复制x而不是y) z = x #z是x([1、3、9、4]) x += [6] #突变由x和z标记的列表(使用扩展功能)。 x = sorted(x) #不更改列表(仅复制x)。 x #输出:[1、3、4、5、6、9] y #输出:[1、3、5、9] z #输出:[1、3、5、9、4、6]
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语