python 函数参数与局部变量相同怎么处理
发布网友
发布时间:2022-04-18 05:12
我来回答
共1个回答
热心网友
时间:2022-04-18 06:41
(1)解释一下函数
def
fun(lst):
lst[0]
=
0;
lst
=
[4,5,6]
return
0
这里从头到尾,lst都是同一个局部变量,也就是函数的参数,为便于描述,我们把它称为“张三变量”。
lst
=[1,2,3]
#
变量lst指向列表[1,2,3],为便于描述,把这个lst变量称为“李四变量”,
#
而列表[1,2,3]称为“王五列表”,“李四变量”指向“王五列表”
fun(lst)
调用fun时,把“李四变量”的值赋给了“张三变量”,从而“张三变量”也指向了“王五列表”。
在函数里:
执行
lst[0]
=
0
把“王五列表”的0号元素改为值0,
执行
lst
=
[4,5,6]
修改了“张三变量”的值,把“张三变量”改为指向列表[4,5,6],
执行
return
0
返回。
所以“王五列表”列表最后的值就是[0,2,3],“李四变量”仍然指向“王五列表”。
(2)如果想让输出结果为[4,5,6],请把语句
lst
=
[4,5,6]
改为
lst[:]
=
[4,5,6]
#
此时是修改“张三变量”指向的“王五列表”
#
自然“李四变量”指向的“王五列表”值已经变为[4,5,6]。