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 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
python爬取m3u8连接的视频
Feb 28 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
Sanic框架配置操作分析
Jul 17 Python
python实现简单的文字识别
Nov 27 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
Python configparser模块应用过程解析
Aug 14 Python
python 如何实现遗传算法
Sep 22 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 Python
Python机器学习之KNN近邻算法
May 14 Python
用python实现监控视频人数统计
May 21 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 高性能书写
2010/12/11 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
跟老齐学Python之用Python计算
2014/09/12 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
大学自主招生自荐信范文
2014/02/26 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
立志成才演讲稿
2014/09/04 职场文书
民主生活会汇报材料
2014/12/15 职场文书
倡议书作文
2015/01/19 职场文书
2015年工程部工作总结
2015/04/30 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
JavaScript实现栈结构详细过程
2021/12/06 Javascript
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Python学习之时间包使用教程详解
2022/03/21 Python
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers