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解析xml模块封装代码
Feb 07 Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
学习python 之编写简单乘法运算题
Feb 27 Python
python读取二进制mnist实例详解
May 31 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
利用Python校准本地时间的方法教程
Oct 31 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
介绍php设计模式中的工厂模式
2008/06/12 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
PHP7.0版本备注
2015/07/23 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
javascript 子窗体父窗体相互传值方法
2010/05/31 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
Python中私有属性的定义方式
2020/03/05 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
求职简历的自我评价怎样写好
2013/10/07 职场文书
仓管员岗位职责范文
2013/11/08 职场文书
电气技术员岗位职责
2013/11/19 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
法制宣传实施方案
2014/03/13 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
社区义诊活动总结
2014/04/30 职场文书
优秀班集体先进事迹材料
2014/05/28 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
python执行js代码的方法
2021/05/13 Python