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中关于日期时间处理的问答集锦
Mar 08 Python
Python获取当前时间的方法
Jan 14 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
Python MD5加密实例详解
Aug 02 Python
python采集微信公众号文章
Dec 20 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
python unichr函数知识点总结
Dec 16 Python
python lambda的使用详解
Feb 26 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
珊瑚虫IP库浅析
2007/02/15 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
基于Python中求和函数sum的用法详解
2018/06/28 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
什么是.net
2015/08/03 面试题
上课玩手机检讨书
2014/02/08 职场文书
党员党性分析材料
2014/02/17 职场文书
征兵宣传标语
2014/06/20 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
七年级作文之冬景
2019/11/07 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python