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 pdb调试方法分享
Jan 21 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
python设定并获取socket超时时间的方法
Jan 12 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
python+adb命令实现自动刷视频脚本案例
Apr 23 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
详解Python 中的容器 collections
Aug 17 Python
python 爬取吉首大学网站成绩单
Jun 02 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
PHP实现倒计时功能
2020/11/16 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
HTML上传控件取消选择
2013/03/06 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
jQuery实现径向动画菜单效果
2015/07/17 Javascript
理解javascript模块化
2016/03/28 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
python 数据类型强制转换的总结
2021/01/25 Python
基于PyTorch中view的用法说明
2021/03/03 Python
运动会入场词50字
2014/02/20 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
学校节能减排方案
2014/06/13 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
六五普法心得体会2016
2016/01/21 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电
Nginx反向代理、重定向
2022/04/13 Servers