Python引用如何工作?

发布于 2021-01-29 18:01:33

我对Python引用感到困惑。考虑以下示例:

我的任务: 编辑列表中的每个元素

d = { 'm': [1,2,3] }
m = d['m']
m = m[1:]   # m changes its reference to the new sliced list, edits m but not d (I wanted to change d)

类似地:

d = { 'm': [1,2,3] }
m = d['m']
m = m[0]    # As per python referencing, m should be pointing to d['m'] and should have edited d

在python中,所有内容都按引用进行操作,那么何时创建新对象?我们总是需要copydeepcopycopy模块,使对象副本?

请说清楚。

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在Python中,变量不是容纳事物​​的盒子,它是指向对象的名称。在您的代码中:

    • d = { 'm': [1,2,3] } ->将名称绑定d到字典
    • m = d['m']->将名称绑定m到列表
    • m = m[1:]->将名称绑定m到另一个列表

    您的第三行不是在改变m自己,而是m在指向什么。

    要编辑列表中的元素,您可以做的是:

    m = d['m']
    for i, item in enumerate(m):
        result = do_something_with(item)
        m[i] = result
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看