本章主要讲述变量、对象、引用三者直接的关联及区别,详细说明了在变量赋值的操作中,计算机内部到底发生了什么,有哪些是不被人察觉和需要明确了解的

1.先从最简单的赋值语句开始

a=3

这一句,基本就能涵盖了我们今天要讲的内容

a:这个是变量

=:这个就是变量对某一个对象的引用

3:这个就是对象

简单的这句话,计算机讲执行一下三个步骤

1).创建一个对象来代表值3

2).创建一个变量a(如果它还没有创建的话)

3).讲变量a与对象3相链接

关于变量要特别说明一下,如果有了解Java的,你就知道,在使用变量的时候需要声明变量的类型,而Python中是不需要的,Python中的变量就只是一个名称,其对应的类型,由对象的类型自己决定,这里可能有点拗口,通过下面的例子就能明白了

a=3

a=“ZHANGJI"

a=[1,2,3]

首先a是数字类型3,接着变量a指向字符类型对象,接着变量a指向列表对象,所以,变量自身没有类型,类型是指的对象

2.共享引用

上面说了最简单的a=3,在这个句的基础上增加一句

a=3

b=a

通过上面我们已经知道,第一句是变量a指向对象3,而第二句,计算机是如何处理的呢?a通过赋值给b,那a到底给了b什么?

直观的感觉就是b=3了,其实在b=a这句中,计算机是把引用地址给了b,也就是说,b指向了对象3,所以在使用b的时候就可以使用对象3了

但是在计算机内存中,对象3只有一个,只是指向它的变量是a和b,甚至可以更多,这叫”共享引用“

好的,在上面两句的基础上,我们再增加一句

a=3

b=a

a=”ZHANG"

那增加的这句又发生什么了呢?a是3还是ZHANG,那b是3还是ZHANG?

前两句我们知道是a和b都指向了对象3,而增加的一句,则是将a指向了对象“ZHANG”,因为要保证变量指向的唯一性,所以变量a也就不再指向对象3

所以上面的结果就是,变量b指向对象3,变量a指向对象“ZHANG”

3.共享引用与相等的关系

通过上面的共享引用,延伸出一个是否相等的问题,在Python中,判断两个是否相等,有两种方式,两种方式也有细微的差别

通过“==”来判断,通过“is”来判断,通过以下示例来了解

通过上面的示例,同时也能验证第二部分讲到的“共享引用”

“==”是用来判断两个对象内容是否一样,

“is”是用来判断是否是一个对象

所以M、L是指向同一个对象,所以“==”判断对象内容是一样的,“is”判断是同一个对象,两个判断都是True

N是单独的赋值,所以是一个不同于L的对象,用“==”判断N、L两者的对象内容是一样的,所以为True,“is”判断两者是否同一个对象,答案是“False”,也就是说,N是指向了另一个内容也为[1,2,3]的对象,所以N和L是来那个不用的对象

由此看来,在Python中,相等有两层含义,内容是否一样,是否是同一个对象,需要特别注意

《Python学习手册 第五版》 -第6章 动态类型的更多相关文章

  1. 《Python学习手册 第五版》 -第13章 while循环和for循环

    上一章已经讲过if条件语句,这章重点是循环语句:while.for 本章的重点内容 1.while循环 1)一般形式 2)break.continue.pass和循环的else 2.for循环 1)一 ...

  2. 《Python学习手册 第五版》 -第12章 if测试和语法规则

    本章节的内容,主要讲解if语句,if语句是三大复合语句之一(其他两个是while和for),能处理编程中大多数逻辑运算 本章的重点内容如下: 1.if语句的基本形式(多路分支) 2.布尔表达式 3.i ...

  3. 《Python学习手册 第五版》 -第11章 赋值、表达式和打印

    上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...

  4. 《Python学习手册 第五版》 -第10章 Python语句简介

    前面在开始讲解数据类型的时候,有说过Python的知识结构,在此重温一下 Python知识结构: 程序由模块组成 模块包含语句 语句包含表达式 表达式创建并处理对象 关于知识结构,前面已经说过我自己的 ...

  5. 自学笔记系列:《Python学习手册 第五版》 -写在开始之前

    今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...

  6. 《Python学习手册 第五版》 -第14章 迭代和推导

    承接上一章for循环的讲解,迭代和推导,是对for循环的一种深入的探索和扩展 本章重点内容 1.迭代 1)什么是迭代?都有哪些分类 2)常规的使用方法 3)多遍迭代器VS单遍迭代器 2.列表推导 1) ...

  7. 《Python学习手册 第五版》 -第18章 参数

    在函数的定义和调用中,参数是使用最多喝最频繁的,本章内容就是围绕函数的参数进行讲解 本章重点内容如下: 1.参数的传递 1)不可变得参数传递 2)可变得参数传递 2.参数的匹配模式 1)位置次序:从左 ...

  8. 《Python学习手册 第五版》 -第15章 文档

    本章主要介绍Python中的文档,会通过多种方式来说明,如果查看Python自带文档和其他参考的资料 本章重点内容 1.#注释:源文件文档 2.dir函数:以列表显示对象中可用的属性 3.文档字符串 ...

  9. 《Python学习手册 第五版》 -第16章 函数基础

    前面的章节讲解的是一些基础数据类型.基本语句使用和一些文档查看的内容,这些都是一些基础,其实还谈不上入门,只有了解了函数,才算入门 函数是编程里面使用最多的也是最基本的程序结构, 本章重点内容 1.函 ...

  10. 《Python学习手册 第五版》 -第17章 作用域

    上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...

随机推荐

  1. Linux下搭建C/C++编程环境

    Linux下搭建C/C++编程环境 1.KDevelop下载 wget -O KDevelop.AppImage https://download.kde.org/stable/kdevelop/5. ...

  2. 【转】HTML5+WebGL:构建 3D 网页新世界

    今年下半年, HTML5 和 WebGL 变成极热门词语,3D 网页来势汹汹.主流的浏览器 Google Chrome 以及 Mozilla Firefox 均致力于 HTML5+WebGL 的 3D ...

  3. C#调用Matlab生成的Dll

    问题描述:最近开发需要调用matlab生成的DLL,在New MWNumericArray 对象的时候报错,提示未将对象引用到对象的实例. 问题分析:因为MWArray.dll是Matlab提供的DL ...

  4. SpringBoot 2.x 开发案例之 Shiro 整合 Redis

    前言 前段时间做了一个图床的小项目,安全框架使用的是Shiro.为了使用户7x24小时访问,决定把项目由单机升级为集群部署架构.但是安全框架shiro只有单机存储的SessionDao,尽管Shrio ...

  5. 开启我的python之路,第一节,git版本管理工具

    git版本管理工具 一.git功能与结构 1.Git是分布式管理系统,服务端和客户端都有版本控制功能,都能进行代码的提交,合并 2.git分为工作区,暂存区,本地仓库和远程仓库 二.git安装与查看 ...

  6. C++Primer第五版 6.1节练习

    练习6.1:实参和形参的区别是什么? 通俗解释: 实参是形参的初始值.编译器能以任意可行的顺序对实参求值.实参的类型必须与对应的形参类型匹配. 详解1) 形参变量只有在函数被调用时才会分配内存,调用结 ...

  7. linux入门系列7--管道符、重定向、环境变量

    前面文章我们学习了linux基础命令,如果将不同命令组合使用则可以成倍提高工作效率.本文将学习重定向.管道符.通配符.转义符.以及重要的环境变量相关知识,为后面的shell编程打下基础. 一.IO重定 ...

  8. UIPickerView 模块示例demo

    本文出自APICloud官方论坛 UIPickerView 此模块封装了一个可以从屏幕底部向上弹出的 action 选择器(3D滚轮效果).开发者可自定义选择器的样式,包括:导航条颜色.高度,导航条上 ...

  9. cogs 1176. [郑州101中学] 月考 字典树

    1176. [郑州101中学] 月考 ★★☆   输入文件:mtest.in   输出文件:mtest.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 在上次的月考中B ...

  10. Java标签学习

    今天早上看Java编程思想第四章控制执行流程,本来很简单的一些东西,但是突然看到了goto发现自己以前还真的没怎么用过,不过Java中对goto作为保留关键字,而是提供了一个叫标签的东西,我们一起来看 ...