python之什么是对象值比较,什么是对象身份比较

一、对象值的比较

1、比较的操作是针对对象的值进行比较的

2、也就是说比较的是对象的值,而不是对象本身

等价于值和值的直接比较:

>>>
>>> 2 == 2
True
>>> 2.46 <= 8.33
True

对象值的比较

>>> a = 88
>>> b = 98
>>>
>>> a == b
False
>>> a >= b
False
>>> a <= b
True
>>> a < b
True

解析:

创建了整型对象88,98,并分别赋值(通过引用)给变量a,b,这里的变量a和b也是对象。记住,python一切皆对象,那么对象a的值是88,对象本身是什么?当然就是a。所以说,比较的是对象的值,而不是对象本身。

二、关于对象身份比较

>>> f = 4
>>> g = 4

>>> f is g
True
>>> id(f)
23359760
>>> id(g)
23359760
>>>

解析:

创建的数字对象分别赋值给了变量f和g,f和g是指向同一个数据对象4。用is来判断f和g是否是同一个对象,那么答案是True,是同一个对象。那么通过id(),查看变量f和g所指向的对象内存地址,那么都是同一个内存地址。

时间: 2024-12-28 00:54:20

python之什么是对象值比较,什么是对象身份比较的相关文章

python 深拷贝和浅拷贝之可变和不可变对象总结

了解深拷贝和浅拷贝之前先要理解可变与不可变对象 python只允许使用引用传递,有可变对象和不可变对象,可变对象:list,dict.不可变对象有:int,string,float,tuple Python int,string,float,tuple不可变举栗子: def int_object(): i = 89 j = 89 print(id(89)) print('i id:' + str(id(i))) print('j id:' + str(id(j))) print(i is j)

2015/10/9 Python基础(21):可调用和可执行对象

在Python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的Python脚本,或执行一个磁盘上的文件,或通过网络来运行文件.这完全取决于想要干什么.特定的环境包括: 在当前脚本继续运行 创建和管理子进程 执行外部命令或程序 执行需要输入的命令 通过网络来调用命令 执行命令来创建需要处理的输出 执行其他的Python脚本 执行一系列动态生成的Python语句 导入Python模块 Python中,内建和外部模块都可以提供上述各种功能.程序员得根据实现的需要,从这些模块中选择合适的处理方

python基础之面向对象编程介绍、类和对象

面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux内核.git.apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程:不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数.面向对象就是把计算

Python函数(第三章:类和对象)

python如何将函数和数据整合在一起,并且通过一个对象的名称访问它们. 如何和为什么使用类与对象,以及他们如何使编程人员易于多种情形下编写和使用程序. 3.1考虑编程 现在要在python中创建一个对对象的描述,您已有足够的只是获得两个视图.第一个是数据视图,除了顶层或者全局作用域的数据外,可以根据需要使用和清除它们.另一个函数视图,他们没有固有的数据,而是操作提供给他们的数据. 3.1.1对象的含义 任何一个数据都有对象,每个对象都由3部分组成:标识,类型和值.对象的标识代表该对象在内存中存

python datatime日期和时间值模块

datetime.time():是一个时间类,这个类接受4个参数,分别代表时,分,秒,毫秒.参数的默认值是为0 1 #!/usr/bin/env python 2 #coding:utf8 3 import datetime 4 t=datetime.time(20, 00, 13, 00) 5 print t 6 print '*'*20 7 print t.hour 8 print t.minute 9 print t.second 10 print t.microsecond 11 12

5.1.24 Python之列表生成式、生成器、可迭代对象与迭代器

语法糖的概念 列表生成式 生成器(Generator) 可迭代对象(Iterable) 迭代器(Iterator) Iterable.Iterator与Generator之间的关系 一.语法糖的概念 "语法糖",从字面上看应该是一种语法."糖",可以理解为简单.简洁.其实我们也已经意识到,没有这些被称为"语法糖"的语法,我们也能实现相应的功能,而 "语法糖"使我们可以更加简洁.快速的实现这些功能. 只是Python解释器会把这

孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2

(完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了解到的BeautifulSoup模块中的一些用法小结: 1. Html标签对象.parent #返回直接上一级父级对象整体 2. Html标签对象.parents #parents返回从a对象的直接父级对象开始的各个逐个上升的父级直到<html></html>级为止的宗谱链,是一个生成器 3. Html标签对象.next_sibling #获取当前Html标签对象

python函数2(返回值、传递列表...)

python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 1 #返回简单值 2 def get_formatted_name(first_name,last_name): 3 """返回整洁的名字""" 4 full_name = first_name + ' ' + last_name 5 return full_name.title() #将首字母大写 6 7 musician = get_formatted_name(

Python的 is 和 == ,你真的搞定对象了吗?

在Python中一切都是对象. Python中对象包含的三个基本要素,分别是: id(身份标识) type(数据类型) value(值) 对象之间比较是否相等可以用 == ,也可以用 is . is 和 == 都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪? is 比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址. == 比较的是两个对象的内容是否相等,默认会调用对象的?__eq__?方法. == 是pytho