Python中避免变量共享引用:正确初始化空列表的方法

陆遥
陆遥
发布时间:2026-10-13 | 5人浏览过
原创

本文解析Python中`new_loss=old_loss=[]`导致的变量共享引用错误,说明两个变量将指向同一内存地址。通过对比错误写法与正确分开初始化的方式,结合代码示例展示输出差异,帮助开发者避免数据污染问题。

Python变量初始化中的引用陷阱

在Python编程中,不能直接使用`new_loss=old_loss=[]`这种写法来同时初始化两个变量。

这种写法会导致两个变量实际上指向同一个列表对象,即它们共享相同的内存地址。

正确的做法是分别独立初始化,例如写成`new_loss=[]`。

同时单独写`old_loss=[]`,确保它们拥有独立的内存空间。

代码示例与输出对比

为了验证这一行为,我们使用以下数据文件作为测试用例:


def analyze_mmr(fn):
 #初始化方法一
 new_loss = []
 old_loss = []
 #初始化方法二
 new_loss = old_loss =[]
 with open(fn, encoding='utf8') as f:
  for line in f:
   parts = line.split('=')
   if parts[0] == 'new_loss':
    print(parts[0])
    print('add_new_loss')
    new_loss.append(parts[1].strip())
   elif parts[0] == 'old_loss':
    old_loss.append(parts[1].strip())
   else:
    pass
 return new_loss, old_loss

执行上述代码逻辑后:


n, o = analyze('../example.txt')

采用初始化方法一(分别初始化)的输出结果为:n=[1,2],o=[3,4]。

采用初始化方法二(共享引用)的输出结果为:n=[1,2,3,4],o=[1,2,3,4]。

测试文档内容如下:


example.txt

new_loss=1

old_loss=3

new_loss=2

old_loss=4

以上关于Python变量初始化空列表的示例解析完毕,希望能为读者提供有效的参考,也欢迎大家继续支持本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表