这一章节说说共享引用

我们先举一个样例

a=1
b=a

上面的样例就是共享引用,这里我们说说整个过程:

1.创建一个对象1

2.创建一个变量a

3.把a和1所在的内存空间连接起来。就是a引用1

4.a正在使用。创建变量b

5.a这个时候被对象1替代

6.b引用对象1

我们以下举另外两个样例:

>>> a=1.1
>>> b=1.1
>>> a is b
False
>>> a=1.1
>>> b=a
>>> a is b
True
>>>

从样例中能够看见,最上面的a和b,两者直接分别指向不同的对象。以下的a和b,指向的是同一个对象, 这就是共享引用。这是一种内部的优化。

我们再来举一些样例。大家能够思考一下

a=1
b=a
a='2'

这个时候会如何?

事实上这个时候是这种。b=1。a='2'

再来,

a=1
b=a
a=a+1

这个时候又会是如何?

因为我们之前已经说过,整数类型对象是不可变。所以,最后的结果是a=2,b=1,2这个对象是又一次创建出来,然后赋值给a,所以不会出现a变b也变的情况

上面我们都是引用一些不可变的对象类型,我们以下引用一些可变的看看如何?

>>> a=[1,2,4]
>>> b=a
>>> b is a
True
>>> a=24
>>> b is a
False
>>> a
24
>>> b
[1, 2, 4]
>>>

假设我们从可变的换成不可变的,基本变化不会出现。可是,假设我们知识修改当中一个值,结果会是如何?

>>> a=[1,2,4]
>>> b=a
>>> b is a
True
>>> a[0]=5
>>> b is a
True
>>> a
[5, 2, 4]
>>> b
[5, 2, 4]
>>>

我们从代码里面看到,虽然我们改变了里面的值,可是两个变量间的关系没有改变,并且b随着a的改变而改变

假设不想出现这样的情况,我们能够使用copy这个函数。或者使用分片

>>> a=[1,2,4]
>>> b=a[:]
>>> b is a
False
>>> a
[1, 2, 4]
>>> b
[1, 2, 4]
>>>

通过上面的代码能够看见,a和b事实上是引用两个不同的对象。仅仅只是他们的值同样

分片通常是用在元组,假设是列表或者字典,则必须使用copy

假设对象里面还有可变对象类型,那么须要使用deepcopy这个函数,不然还是会出现a变b变的情况

还是上面的代码。我们在最后加一句

>>> a=[1,2,4]
>>> b=a[:]
>>> b is a
False
>>> a
[1, 2, 4]
>>> b
[1, 2, 4]
>>> a==b
True
>>>

虽然a和b 的引用不同。可是假设我们使用==来对照两者,返回的结果是True。is是对照两者的引用,==对照两者的值

就讲到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-文件夹

零基础学python-6.2 共享引用的更多相关文章

  1. [零基础学python]为什么要开设本栏目

    这个栏目的名称叫做"零基础学Python". 如今网上已经有不少学习python的课程.当中也不乏精品.按理说,不缺少我这个基础类型的课程了.可是,我注意到一个问题.无论是课程还是 ...

  2. 零基础学python》(第二版)

    ---恢复内容开始--- 零基础学python>(第二版) python学习手册 可以离线下载,  .chn格式, 插入小幽默笑话,在学习累的时候看看笑话 放松一下 欢迎下载转载,请注明出处,谢 ...

  3. 零基础学python,python视频教程

    零基础学python,python视频教程 这是我收集到的互联网上的视频资源,所有内容均来自互联网.仅供学习使用. 目前我在也在学习过程中,会把学习过程中遇到问题以及解决问题的方式,总结到我的公众号[ ...

  4. 小甲鱼零基础学python第25讲课后习题动手练习--通讯录

    小甲鱼零基础学python第25讲课后习题动手练习---通讯录 **************************通讯录要求******************************* 输入指令: ...

  5. Python学习课程零基础学Python

    python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...

  6. 零基础学python之构建web应用(入门级)

    构建一个web应用 前面的学习回顾: IDLE是Python内置的IDE,用来试验和执行Python代码,可以是单语句代码段,也可以是文本编辑器中的多语句程序. 四个内置数据结构:列表.字典.集合和元 ...

  7. 零基础学Python不迷茫——基本学习路线及教程!

    什么是Python? 在过去的2018年里,Python成功的证明了它自己有多火,它那“简洁”与明了的语言成功的吸引了大批程序员与大数据应用这的注意,的确,它的实用性的确是配的上它的热度.   Pyt ...

  8. [零基础学python]啰嗦的除法

    除法啰嗦的,不仅是python. 整数除以整数 看官请在启动idle之后.练习以下的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> ...

  9. 零基础学Python 3之环境准备

    一. 配置python 3 环境 1. Python 3 下载 64位 https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64.msi 3 ...

  10. 零基础学python之函数与模块(附详细的代码和安装发布文件过程)

    代码重用——函数与模块 摘要:构建函数,创建模块,安装发布文件,安装pytest和PEP 8插件,确认PEP8兼容性以及纠错 重用代码是构建一个可维护系统的关键. 代码组是Python中对块的叫法. ...

随机推荐

  1. WPF利用radiobutton制作菜单按钮

    原文:WPF利用radiobutton制作菜单按钮 版权声明:欢迎转载.转载请注明出处,谢谢 https://blog.csdn.net/wzcool273509239/article/details ...

  2. MySQL优化之——集群搭建步骤具体解释

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179 1 概述 MySQL Cluster 是MySQL 适合于分布式计算 ...

  3. ioctl.h 分析

    ioctl.h 分析 我自己画了个解析图...不要嫌弃丑啊.. . 哈哈 type The magic number. Just choose one number (after consulting ...

  4. bzoj1212: [HNOI2004]L语言(字典树)

    1212: [HNOI2004]L语言 题目:传送门 题解: 看完题目之后就觉得可以暴力在字典树上之间询问,一开始还傻了以为用文章来建,肯定用单词啊: 那么我们可以用一个v数组表示当前字符串1~i的区 ...

  5. matplotlib 可视化 —— matplotlib.patches

    官方帮助文档 patches - Matplotlib 1.5.1 documentation patches 下主要包含的常用图形类有: Eclipse Circle Wedge 1. plt.gc ...

  6. MYSQL主从复制搭建及切换操作(GTID与传统)

    结构如下: MYSQL主从复制方式有默认的复制方式异步复制,5.5版本之后半同步复制,5.6版本之后新增GTID复制,包括5.7版本的多源复制. MYSQL版本:5.7.20 操作系统版本:linux ...

  7. BOOL的getter方法

    在代码中经常会看到这样的属性声明 @property (nonatomic,assign,getter = isRead)BOOL read; 这行代码的意思就是,声明一个BOOL类型的read,但是 ...

  8. Kali linux 2016.2(Rolling)中的payloads模块详解

    不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)中的Exploits模块详解 payloads模块,也就是shellcode,就是在漏洞利用成功后所要做的事情.在M ...

  9. C#--DataGridView添加DateTimePicker时间控件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. POJ 3694 Network(Tarjan求割边+LCA)

    Network Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10969   Accepted: 4096 Descript ...