内存地址,赋值,值类型,引用类型

对不可变对象的赋值,每个实例的内存地址都是一样的,因为不可变对象是唯一的。

# immutable 不可变对象

>>>a1 = "hello"

>>>a2 = "hello"

>>>id(a1) id(a2)

(2314077154976, 2314077154976)

# mutable 可变对象

>>>b1 = [1, 2]

>>>b2 = [1, 2]

>>>b3 = b1[:] #浅复制

>>>b4 = b1

id(b1), id(b2), id(b3), id(b4)

>>> (2314077034120, 2314077036104, 2314076292936, 2314077034120)

详细图解

可见,对于字符串对象,是直接指向的,而对于列表,则是指向了引用。

对于列表这种指向了引用的数据类型,我们称之为引用类型。在python的基本数据结构中,list, dict, set都是引用类型,并且是可变的mutable。

对于直接指向的数据类型,我们称为值类型,值类型是不可变的immutable,int, str, tuple都是值类型。

引用类型的内存地址

我们用下面的例子来看一下引用类型的地址属性

>>>list1 = [1, 2, 3]

>>>id(list1)

85548528

>>>list1[0] = "one" # 改变list1里面的对象

>>>list1

['one', 2, 3] # list1改变了

>>>id(list1)

85548528 # 内存地址不变

浅复制

对于列表和其他可变的序列,下面的方法都会产生浅复制:

list2 = list(list1)

list2 = list1[:]

list2 = copy.copy(list1)

假设有两层列表对象l1和他的浅复制l2:

l1 = [1, 2, 3, [44, 55], (66, 77, 88)]

l2 = l1[:]

详细图解

列表对象l1有两层,l1第一层为[1, 2, 3, *list, *tuple]。当对l1第一层的元素进行添加,移除操作时,l1,l2互不影响。

>>>l1.append("new")

>>>l1, l2

([1, 2, 3, [44, 55], (66, 77, 88), ['new']],

[1, 2, 3, [44, 55], (66, 77, 88)])

但是第二层对象的*list,它们之乡的地址是一样的,对他们进行修改时,将会同时影响l1, l2,列表[44, 55]的内存地址引用不会改变,所以对[44, 55]列表进行改变,l1,l2都会受到改变。

>>>l1[3].append('66')

([1, 2, 3, [44, 55, '66'], (66, 77, 88), ['new']],

[1, 2, 3, [44, 55, '66'], (66, 77, 88)])

python的官方网站地址是什么-python赋值和地址相关推荐

  1. python搭建web网站 腾讯云,python搭建web网站代码

    如何用Python做Web开发? Python的Web开发,也是工作岗位比较多的领域. 一.基于Python的代表性Web框架下面是一些比较有代表性的框架:Django:Python 界最全能的 We ...

  2. python抓取网站图片_利用python抓取网站图片

    看了网上关于python抓取网站图片的例子,所以自己也尝试着写一个,但是发现这个网站的src不是标准的路径,需要自己添加前面的目录地址,尝试了几次也不成功,所以希望有经验的朋友指导下. 本人是初学者, ...

  3. 八个python免费自学网站一周熟练python(抓紧收藏)

    PS:本文顺序无主次之分纯属我个人排版时候随便的顺序!!!,另外可以把这篇文章分享给身边需要学习的人,帮助别人也是帮自己嘛 嘻嘻而且顺便说一下一周之内基础知识完全可以掌握的,至于能力提升就看自己的方向 ...

  4. python语言官方网站地址-python 中国地址

    # !/usr/bin/env python # -*- coding:utf-8 -*- """ area参数自助生成 运行脚本,根据提示逐级选择区域即可 " ...

  5. python的官方网站地址是什么-规范化Django/Python中的街道地址

    Tyson 这就是我解决这个问题的方式(不是双关语):### models.py ### def normalize_address_for_display(address): display_add ...

  6. python程序官方网站-IO编程

    IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 比如你打开 ...

  7. python 自动登录网站_Windows系统中Python实现每日定时自动登录签到

    问题描述 在每天比如10点到11点之间定时自动登陆网站,签到 实现思路 使用fiddler抓包工具先登陆一遍,把请求的地址,header等信息都拿到. 使用python写一个脚本,模拟浏览器向服务器发 ...

  8. labview python opencv_OpenCV官方教程中文版(for Python)pdf+自己编写的全套目录

    [实例简介] OpenCV官方教程中文翻译版,python语言,自做完整书签方便查找阅读 内容详细,是学OpenCV的必备教程 书虽然挺好的,但是不够全面,不能让读者完全了解 opencv的现状).而 ...

  9. python如何开发网站_如何用Python写一个小网站?

    一.准备 python基础相关准备:pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通"安python 3.8.0 在python官网下载,不 ...

最新文章

  1. Python学习笔记十一:面向对象
  2. R语言使用caret包对GBM模型进行参数调优实战:Model Training and Parameter Tuning
  3. 上高职业技术学校计算机学几年,上高职业技术学校2021年有哪些专业
  4. php如何判断多文件上传,php多文件上传
  5. element标签弹窗_如何在element plus中实现不同弹窗传值
  6. Java学习小程序(6)随机加法运算器
  7. Cassandra集群配置
  8. 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!
  9. 本文为 2021 年 5 月知识总结
  10. 女生做程序员压力大吗?
  11. scp 跨机远程拷贝
  12. 苹果登陆qq邮箱服务器,腾讯QQ邮箱配置,在苹果邮件配置和第三方spark登录qq邮箱账号...
  13. powerdesigner下载,注释转换和导出word
  14. 「笔耕不辍」mysql的索引分类B+和hash详解
  15. Android Studio开发手机APP(二)-利用MQTT通信开发物联网程序
  16. android 18x games,Roadgames
  17. Python Socket传输图片
  18. 休眠后网络无法自动连接——网卡属性没有电源管理选项
  19. Android7.0分屏功能
  20. axios拦截器使用

热门文章

  1. nodejs 转换long到unsigned long(NXT)
  2. 暑假N天乐【比赛篇】 —— 2019杭电暑期多校训练营(第四场)
  3. asp.net 利用Global.asax 捕获整个解决方案中的异常错误
  4. ZOJ 3822 Known Notation(2014牡丹江Regional K题)
  5. nodejs - 创建服务器(1)
  6. Java设计模式(20)——行为模式之命令模式(Command)
  7. python 机器移植
  8. 面试题23_从上往下打印二叉树
  9. tp框架实现ajax
  10. Objective-C(十八、谓语使用及实例说明)——iOS开发基础