加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

函数中的Python列表引用.

发布时间:2020-12-20 12:28:36 所属栏目:Python 来源:网络整理
导读:如果我传入一个列表,我无法理解 python函数中的奇怪行为. 我做了以下功能: def func(x): y = [4,5,6] x = ydef funcsecond(x): y = [4,6] x[1] = y[1]x = [1,2,3] 当我调用func(x)然后打印出x时,它打印出[1,3],就像x之前的那样,它不会将列表y分配给x.但是,
如果我传入一个列表,我无法理解 python函数中的奇怪行为.
我做了以下功能:

def func(x):
    y = [4,5,6]
    x = y

def funcsecond(x):
    y = [4,6]
    x[1] = y[1]

x = [1,2,3]

当我调用func(x)然后打印出x时,它打印出[1,3],就像x之前的那样,它不会将列表y分配给x.但是,如果我调用funcsecond(x),它会将5分配给x的第二个位置.为什么会这样?当我分配整个列表时,它不会做任何事情,但是当我只分配一个元素时,它会更改我最初调用它的列表.
非常感谢你,我希望你明白我打算说什么,我很难用英语表达自己.

解决方法

发生这种情况,因为x指向一个可变的对象.

def func(x): # here x is a local variable which refers to the object[1,3]
    y = [4,6]
    x = y  #now the local variable x refers to the object [4,6]

def funcsecond(x): # here x is a local variable which refers to the object[1,6]
    x[1] = y[1]  # it means [1,3][1]=5,means you changed the object x was pointing to

x = [1,3]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读