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; 展开
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; 展开
展开全部
(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]。
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]。
展开全部
只能这么做,如果有规律的话可以用enumerate
lst = [1,2,3]
for i,v in enumerate(lst):
lst[i] = v+3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将lst = [4,5,6]这句改成lst[ : ] = [4,5,6]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询