`

Python基础:Python的变量和对象

阅读更多

一、基本原理
Python中一切都是对象,变量中存放的是对象的引用。这是一个普遍的法则。我们举个例子来说,Python是如何来处理的。

x = 'blue'
y = 'green'
z = x

当python执行上面第一句的时候,会在heap中首先创建一个str对象,其文本内容为blue,同时还创建一个名为x的对象引用,x引用的就是这个str对象。第二句也是类似;第三条创建了一个名为z的新对象引用,并将其设置为对象引用x所指向的相同对象。如下图的变化。


所以看出在Python中赋值操作符号“=”的作用是,将对象引用和内存中的某个对象进行绑定。如果对象已经存在,就进行简单的重新绑定,以便引用“=”右边的对象;如果对象引用尚未存在,就首先创建对象,然后将对象引用和对象进行绑定。这很类似与c中的指针的概念。

Python使用“动态类型”机制,也就是说,在Python程序中,任何时候可以根据需要,某个对象引用都可以重新绑定到另一个不同的对象上(不要求是相同的类型),这和其他强化型语言如(C++,Java)不太一样,只允许重新绑定相同类型的对象上。在Python中,因为有“动态类型”机制,所以一个对象引用可以执行不同类型的对象适用的方法。当一个对象不存在任何对象引用的时候,就进入了垃圾收集的过程。

>>> a = 100
>>> a /10
10.0
>>> a[0]
Traceback (most recent call last):
  File "<pyshell#166>", line 1, in <module>
    a[0]
TypeError: 'int' object is not subscriptable
>>> a = 'hello'
>>> a[0]
'h'
>>> a /10
Traceback (most recent call last):
  File "<pyshell#169>", line 1, in <module>
    a /10
TypeError: unsupported operand type(s) for /: 'str' and 'int'
 


第一句 a = 100
Python会在heap创建一个int对象,其内容为100,同时创建a变量,其值指向heap中的int对象

第二句 a/10
Python适用“动态类型”机制,判断a指向的对象是int型,可以适用/(除法)操作。于是便进行运算产生结果。(它会在heap中在创建一个10.0的对象么?)

第三句 a[0]
Python适用“动态类型”机制,判断a指向的对象是int型,并不适用[](分片)操作。于是就进行报错。

第四句 a = 'hello'
Python会在heap创建一个str对象,其内容为hello,同时改变a变量,使得其值指向heap中的str对象。同时原来的int对象,由于不在存在对象引用,所以就进入了垃圾收集过程。


第五句 a[0]
Python适用“动态类型”机制,判断a指向的对象是str型,可以适用[](分片)操作。于是便进行运算产生结果。

第六句 a/10
Python适用“动态类型”机制,判断a指向的对象是str型,并不适用/(除法)操作。于是就进行报错。


总之 :在Python中一切都是对象,变量总是存放对象引用。当一个对象没有变量指向它的时候,它便进入了垃圾收集过程。Python的“动态类型”机制,负责检查变量的对象引用适用操作。如果该对象不适用该操作,则会直接报错。一句话”变量无类型,对象有类型

 

二、python的id(),==,is的差别

1. id():获取的是对象在内存中的地址

2. is :比对2个变量的对象引用(对象在内存中的地址,即id() 获得的值)是否相同。如果相同则返回True,否则返回False。换句话说,就是比对2个变量的对象引用是否指向同一个对象。

3. ==:比对2个变量指向的对象的内容是否相同。

  • 大小: 13.1 KB
  • 大小: 3.8 KB
  • 大小: 6.3 KB
分享到:
评论

相关推荐

    从零开始学Python:Python语言中的变量.docx

    从零开始学Python:Python语言中的变量.docx从零开始学Python:Python语言中的变量.docx从零开始学Python:Python语言中的变量.docx从零开始学Python:Python语言中的变量.docx从零开始学Python:Python语言中的变量...

    Python语言基础:局部变量和全局变量.pptx

    对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用域内,其本质上也是不同的变量。 实例:局部变量和全局变量的对比,并输出结果。 具体实现: total = 0 # 这是一个全局变量 def sum( arg1, arg2 ...

    Python语言基础:变量.pptx

    在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。 &gt;&gt;&gt; x = 3 解析:创建了整型变量x,并赋值为3。 &gt;&gt;&gt; x="Hello World." 解析:创建了字符串变量x,并赋值为“Hello World.” 。 在...

    Python程序基础:Python中的变量.pptx

    (1)Python的变量名区分英文字母大小写,如score和Score是两个不同的变量。 (2)变量名不能是Python的关键字。 &gt;&gt;&gt; import keyword #导入keyword模块 &gt;&gt;&gt; keyword.kwlist #查看所有关键字 Python本身定义的一些...

    课课家教育-跟着王进老师学开发Python篇:基础入门案例讲解视频教程.docx

    课程目标:跟着王进老师学开发Python系列课程:主要面对Python零基础学员,从基本环境搭建到基础语法,Python全栈,Django,MySQL数据库,Web前端、最后到爬虫和人工智能,课程循序渐进逻辑性强,让大家学以致用。...

    Python语言基础:类的变量方法.pptx

    “self”关键字指代类的一个对象, “self”参数可以调用类中的变量和方法。 实例:“self”关键字的使用方法进行程序编写,并输出结果。 具体实现: class Students: def __init__(self,id_number): self.id=id_...

    2019千峰Python超详细入门教程(百度云盘分享).docx

    │ 千锋Python教程:01.python概述和工具的安装.mp4 │ 千锋Python教程:02.数据存储与二进制操作1.mp4 │ 千锋Python教程:03.数据存储与二进制操作2.mp4 │ 千锋Python教程:04.第一个Python程序与注释及输入输出....

    Python程序设计:Python常量和变量.pptx

    在本任务中,我们将先学习Python变量、字符串、列表、字典、集合等的使用方法,并穿插相应的案例及分析过程,实行理论讲解和案例分析相结合的方式。 任务 NBA球星信息查询 任务知识点 Python常量和变量 Python数字和...

    python3入门书籍免费-Python3基础教程(第2版)(慕课版).pdf

    Python基本语法15 2.1 基本语法元素15 2.1.1 缩进15 2.1.2 注释16 2.1.3 语句续⾏符号16 2.1.4 语句分隔符号17 2.1.5 保留字和关键字17 2.2 基本输⼊和输出18 2.2.1 基本输⼊18 2.2.2 基本输出19 2.3 变量与对象20 ...

    千峰Python超详细入门教程(百度云盘分享).txt

    │ 千锋Python教程:01.python概述和工具的安装.mp4 │ 千锋Python教程:02.数据存储与二进制操作1.mp4 │ 千锋Python教程:03.数据存储与二进制操作2.mp4 │ 千锋Python教程:04.第一个Python程序与注释及输入输出....

    Python学习Day01

    Python基础知识学习的第一天: 一、Python简介: (1) Python的出生: (2)Python的主要应用领域: (3)Python大事件: (4)编辑语言:编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言 (5)Python...

    Task 1 Python基础入门:从变量到异常处理.pdf

    01龙珠Python训练营Task 1_ Python基础入门 的学习笔记 加注释

    尚硅谷Python核心基础

    任务30: 尚硅谷_Python基础_30_变量和对象12:23 任务31: 尚硅谷_Python基础_31_类型转换20:38 任务32: 尚硅谷_Python基础_32_算术运算符14:16 任务33: 尚硅谷_Python基础_33_赋值运算符07:40 任务34: ...

    千峰python课件笔记+源码 (凯哥)

    与变量和运算符' 千锋python基础教程:3、字符串与循环中的while '千锋python基础教程:4、布尔&list;与条件循环语句与trutle' '千锋python基础教程:5、元组&字符串&字典' 千锋python基础教程:6、函数基础 '千锋...

    Python语言基础:作用域.pptx

    Python 中,变量的访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python的作用域一共有4种,分别是:L(Local):最内层,包含局部变量,比如一个函数/方法...

    Python程序基础:Python中的输入输出.pptx

    python中的输入输出;在Python中使用print()函数进行输出。 输出字符串时可用单引号或...input()函数让程序暂停运行,等待用户输入数据,当获取用户输入后,Python将其以字符串的形式存储在一个变量中,方便后面使用。;

    python基础教程至60课(基础)

    python基础教程至60课(基础) 【Python 第1课】安装 6 【Python 第2课】print 7 【Python 第3课】IDE 10 【Python 第4课】输入 12 【Python 第5课】变量 14 【Python 第6课】bool 16 【Python 第7课】if 19 【Python...

    python开发基础学习之变量

    python开发基础学习之变量,一文搞定python基础变量的学习,适合初学python的学者

Global site tag (gtag.js) - Google Analytics