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 相关文章推荐
TensorFlow损失函数专题详解
Apr 26 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
numpy中loadtxt 的用法详解
Aug 03 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
selenium+python自动化测试环境搭建步骤
Jun 03 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
Feb 18 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 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
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
golang与PHP输出excel示例
2016/07/22 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python实现在线音乐播放器
2017/03/03 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python小进度条显示代码
2019/03/05 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
双方协议书
2014/04/22 职场文书
授权委托书(完整版)
2014/09/10 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
安全生产工作汇报
2014/10/28 职场文书
支行行长岗位职责
2015/02/15 职场文书
绿色环保倡议书
2015/04/28 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
找规律教学反思
2016/02/23 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书