Python中 传递值 和 传递引用 的区别解析


Posted in Python onFebruary 22, 2018

对于不可变类型传递值(不会影响原数据)

Python中 传递值 和 传递引用 的区别解析 

不可变类型

对于可变类型传递引用(会影响原数据)

Python中 传递值 和 传递引用 的区别解析 

不可变类型传递引用

python3不可变类型

  • Number(数字)
  • String(字符串)
  • Tuple (元组)

python3可变类型

  • List(列表)
  • Dictionary (字典)
  • Sets(集合)

参数传递的思考

  • 我们声明的变量名可以看做便签
  • 为变量名赋值的操作可以看做将标签贴到"值"的表面(值可以是可变类型,和不可变类型)

以链表中的节点对象为例(实例化的节点对象为不可变类型, 但对象中的属性是可变的)

Python中 传递值 和 传递引用 的区别解析 

链表对象

class NodeList(object):
  def __init__(self, val):
    self.val = val
    self.next = None
# 遍历链表
def traverse_nodes(head):
  tmp = head
  while tmp:
    print("节点id为:", id(tmp), "节点的值为:", tmp.val, )
    tmp = tmp.next
# 创建链表
def create_node_list():
  head = NodeList(0);
  left_p = head
  print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
  left_p.next = NodeList(1);
  left_p = left_p.next
  print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)  
  left_p.next = NodeList(2);
  left_p = left_p.next
  print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
  left_p.next = NodeList(3);
  left_p = left_p.next
  print("头节点id:",id(head), "当前节点id:",id(left_p), "当前节点值:", left_p.val)
  return head
def main():
  # 创建链表
  print("==>创建链表函数中:")
  head = create_node_list()
  print("==>在遍历函数中:")
  traverse_nodes(head)
if __name__ == '__main__':
  main()

总结

以上所述是小编给大家介绍的Python中 传递值 与 传递引用 的区别解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python中规范定义命名空间的一些建议
Jun 04 Python
python 输出上个月的月末日期实例
Apr 11 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
Tensorflow实现多GPU并行方式
Feb 03 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
python实现简单坦克大战
Mar 27 Python
keras输出预测值和真实值方式
Jun 27 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 #Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 #Python
Django中redis的使用方法(包括安装、配置、启动)
Feb 21 #Python
基于Django用户认证系统详解
Feb 21 #Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 #Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 #Python
python中abs&map&reduce简介
Feb 20 #Python
You might like
递归列出所有文件和目录
2006/10/09 PHP
PHP中的正则表达式函数介绍
2012/02/27 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
Ajax基础知识详解
2017/02/17 Javascript
js转换对象为xml
2017/02/17 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
人事助理岗位职责
2013/11/18 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
班主任班级寄语大全
2014/04/04 职场文书
什么是就业协议书
2014/04/17 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
项目合作意向书
2015/05/08 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书