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地址合法性的方法实例
Mar 13 Python
Python中使用第三方库xlrd来读取Excel示例
Apr 05 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
python调用摄像头拍摄数据集
Jun 01 Python
详解用python计算阶乘的几种方法
Aug 14 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
Python循环实现n的全排列功能
Sep 16 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python中68个内置函数的总结与介绍
Feb 24 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 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+xslt在windows平台上
2006/10/09 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
javascript prototype 原型链
2009/03/12 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
vue实现简单图片上传
2020/06/30 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python绘制规则网络图形实例
2019/12/09 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
员工年终演讲稿
2014/01/03 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
挂职学习心得体会
2014/09/09 职场文书
社区服务活动报告
2015/02/05 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis