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多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python算法应用实战之队列详解
Feb 04 Python
Python制作Windows系统服务
Mar 25 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
浅谈django orm 优化
Aug 18 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
python判断计算机是否有网络连接的实例
Dec 15 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
Python 处理文件的几种方式
Aug 23 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
python 装饰器的使用示例
Oct 10 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
自定义PHP分页函数
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
php 中的closure用法详解
2017/06/12 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
200 行python 代码实现 2048 游戏
2018/01/12 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
Django视图类型总结
2021/02/17 Python
香蕉共和国Banana Republic官网:美国GAP旗下偏贵族风格服饰品牌
2016/11/21 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
煤矿开采专业求职信
2014/07/08 职场文书
小学生春游活动方案
2014/08/20 职场文书
个人年终总结范文
2015/03/09 职场文书
行政上诉状范文
2015/05/23 职场文书
天气温馨提示语
2015/07/14 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
2016年敬老月活动总结
2016/04/05 职场文书