列表或字典的引用:

引用针对变量的时候,传递引用后,对引用后的对象的值进行改变是不会影响到原值的;而列表不一样如:

spam =42

cheese = spam

spam =100

print(spam)      #out:100

print(cheese)   #out:42

如果对列表进行引用会是什么情况呢,我们来看看

spam = [0,1,2,3,4,5]
cheese = spam
print(spam)
cheese[1] = 'hello'
print(spam)
print(cheese)

out:

[0, 1, 2, 3, 4, 5]
[0, 'hello', 2, 3, 4, 5]
[0, 'hello', 2, 3, 4, 5]

结果我们发现cheese 是引用的spam的,我们改变cheese之后 spam的值也跟着改变了;这个就跟我们当初学的C语言一样;列表的引用其实就是相当于把前面一个列表的地址同时给了一个新的列表用。结果这两个列表都指向了同一地址而这个地址里面本身就只能存放一组数据,不管是对这两个列表谁进行操作都会把这个地址中的数据重新更新;也因此列表可以用来形参的传递来改变实参的值,而变量不同,变量的形参传递是不会改变实参的值的;

def eggs(somePrameter):
  somePrameter.append('Hello')

def trees(somename):
   somename+='Hello'
   print('形参值:'+somename)

spam = [0,1,2,3]
treename = '梧桐'
eggs(spam)
trees(treename)
print(spam)
print('实参值:'+treename)

out:

形参值:梧桐Hello
[0, 1, 2, 3, 'Hello']
实参值:梧桐

列表或字典的复制

在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表和字典,你可能不希望这些变动影响到原来的列表或字典。要做到这一点,Python提供了copy的模块,其中包含copy()和deepcopy()函数。第一个函数copy.copy(),可以用来复制列表或字典这样的可变值,而不是复制引用.注意这需要用到copy模块,因此要import copy

如上示例做些许更改所示:

import copy
spam = [0,1,2,3,4,5]
cheese = copy.copy(spam)
print(spam)
cheese[1] = 'hello'
print(spam)
print(cheese)

out:

[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5]
[0, 'hello', 2, 3, 4, 5]

最新文章

  1. 思维导图FreeMind安装问题及简单使用
  2. 【HDU】4773 Problem of Apollonius
  3. GIFT-EMS礼记----青软S2SH(笔记)
  4. Unity3D 动画回调方法
  5. Maximum sum(poj 2479)
  6. SDUT 2623:The number of steps
  7. 如何安装php?
  8. WordPress使用SQLite全新安装
  9. ALAssetsLibrary
  10. 【转】Rails 3.1错误-Could not find a JavaScript runtime及execjs和therubyracer介绍
  11. DatePicker的使用
  12. 关于android混淆文件project.properties和proguard-project.txt详解
  13. 《深入理解Java虚拟机》-----第2章 Java内存区域与内存溢出异常
  14. ☆ [NOI2014] 魔法森林 「LCT动态维护最小生成树」
  15. 接口自动化测试持续集成--Soapui接口功能测试参数化
  16. curl模拟ip和来源进行网站采集的实现方法
  17. 使用Sphinx编写文档
  18. passat / maintenance / baoyang
  19. js 标准对象
  20. 利用LOCK机制来定位前缀劫持者

热门文章

  1. Linux阶段总结
  2. Android性能优化----卡顿优化
  3. Django学习路17_聚合函数(Avg平均值,Count数量,Max最大,Min最小,Sum求和)基本使用
  4. 排序HEOI2016/TJOI2016 二分+线段树判定
  5. x86架构:从实模式进入保护模式
  6. 使用javaScript 取cookie时需要注意的
  7. 阿里出品的最新版 Java 开发手册,嵩山版,扫地僧
  8. C#LeetCode刷题之#674-最长连续递增序列( Longest Continuous Increasing Subsequence)
  9. Vue 引入指定目录文件夹所有的组件 require.context
  10. HTML基础-04