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逐行读写txt文件的实例讲解
Apr 03 Python
DRF跨域后端解决之django-cors-headers的使用
Jan 27 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python 命令行传入参数实现解析
Aug 30 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
Python实现简繁体转换
Jun 07 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
php获取mysql版本的几种方法小结
2008/03/25 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP获取一年中每个星期的开始和结束日期的方法
2015/02/12 PHP
PHP7新功能总结
2019/04/14 PHP
AngularJS基础知识笔记之表格
2015/05/10 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
js中url对象化管理分析
2017/12/29 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
详解javascript脚本何时会被执行
2021/02/05 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Python对wav文件的重采样实例
2020/02/25 Python
使用Python实现音频双通道分离
2020/12/25 Python
一套Delphi的笔试题一
2016/02/14 面试题
公司离职证明范本
2014/01/13 职场文书
主管会计岗位职责
2014/03/13 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
大学生实训报告总结
2014/11/05 职场文书
财务出纳岗位职责
2015/03/31 职场文书
2016党员党课心得体会
2016/01/07 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL