Python函数的参数与局部变量相同,怎么处理的? 30

deffun(lst):lst[0]=0;lst=[4,5,6]return0lst=[1,2,3]fun(lst)printlst输出结果是[0,2,3]看输出结果,肯... def fun(lst):
lst[0] = 0;
lst = [4,5,6]
return 0
lst =[1,2,3]
fun(lst)
print lst
输出结果是[0,2,3]
看输出结果,肯定是lst=[4,5,6]这一句,是在函数内部新建了一个局部变量。
他为什么不是修改传进去的那个参数lst?
如果我想让输出结果为[4,5,6],那我应该怎么修改函数内部的代码?
当然最简单的是lst[0] = 4;lst[1] = 5; lst[2] =6;
展开
 我来答
百度网友03bbd54
2013-10-07 · TA获得超过369个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:136万
展开全部
(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]。
Inpool
2013-10-07 · TA获得超过782个赞
知道小有建树答主
回答量:486
采纳率:66%
帮助的人:444万
展开全部

只能这么做,如果有规律的话可以用enumerate

lst = [1,2,3]
for i,v in enumerate(lst):
    lst[i] = v+3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aa1ss2_2
2013-10-07 · TA获得超过397个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:197万
展开全部
将lst = [4,5,6]这句改成lst[ : ] = [4,5,6]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式