You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

何时创建对象引用而非复制对象更具实用价值?

通常我们需要使用b = copy(a)或b = deepcopy(a)来复制对象,而非使用b = a创建原对象的新引用。否则,修改b可能会导致a被意外修改,反之亦然。

但我好奇b = a的适用场景有哪些。以下是我想到的几个例子,还有哪些场景被我遗漏了?

  • 不可变对象:如果a和b指向的对象无法修改,那么b = a就很实用。执行b = a后,a和b指向同一个字符串对象,但由于字符串不可变,当给a赋值另一个对象时,不会有意外修改b的风险。

    a = "字符串是不可变的,因此无法被修改。"
    b = a
    a = "给a分配新字符串。原来的字符串仍然和b绑定。"
    
  • 简化变量名提升可读性:有时创建更短的变量名有助于提升计算代码的可读性。

    # 给具有描述性名称的变量赋值
    long_variable_name = [1, 2]
    longer_variable_name = [3, 4]
    longest_variable_name = [5, 6]
    
    # 创建更短的临时变量用于计算
    a = long_variable_name
    b = longer_variable_name
    c = longest_variable_name
    
    # 执行计算
    result = (a[0] + b[0] + c[0]) / (a[1] + b[1] + c[1])
    
  • 关联多个变量:下面的示例中有两个死对头Angela和Bob。默认情况下,他们讨厌对方喜欢的一切(见最后两行代码)。

    class Person:
        def __init__(self, name):
            self.name = name
            self.favorite_things = []
            self.least_favorite_things = []
    
    angela = Person("Angela")
    bob = Person("Bob")
    
    angela.favorite_things = ["菠萝朗姆酒", "淋雨"]
    bob.favorite_things = ["瑜伽", "健康食品"]
    
    angela.least_favorite_things = bob.favorite_things
    bob.least_favorite_things = angela.favorite_things
    

内容的提问来源于stack exchange,提问作者Scott Weiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:37:33