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中使用hashlib模块处理算法的教程
Apr 28 Python
详解Python中heapq模块的用法
Jun 28 Python
Python中运算符"=="和"is"的详解
Oct 08 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
用python求一重积分和二重积分的例子
Dec 06 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
Python爬取某拍短视频
Jun 11 Python
你需要掌握的20个Python常用技巧
Feb 28 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
javascript常见用法总结
2014/05/22 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
javascript history对象详解
2017/02/09 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
js实现星星打分效果
2020/07/05 Javascript
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
python变量不能以数字打头详解
2016/07/06 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Flask框架配置与调试操作示例
2018/07/23 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
Django视图扩展类知识点详解
2019/10/25 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
什么是会话Bean
2015/05/14 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
专升本个人自我评价
2013/12/22 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
体育节口号
2014/06/19 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
Java实现多线程聊天室
2021/06/26 Java/Android
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL