Python对象类型及其运算方法(详解)

Mason
Mason
发布时间:2026-10-13 | 3人浏览过
原创

本文详解Python中对象的身份、类型与值概念,涵盖数字、字符串、容器等核心数据类型及相互转换方法。重点解析布尔类型的底层逻辑、真值测试规则,以及and/or运算符的短路计算机制,帮助开发者深入理解Python对象模型与运算行为。

基本要点:

程序中存储的所有数据均为对象,分为可变对象(值可修改)和不可变对象(值不可修改)。

每个对象都具备三个基本属性:身份(identity)、类型(type)和值(value)。

示例:

 >>> a1 = 'abc'
 >>> type(a1)
 str

创建一个字符串对象,其身份对应内存中的指针地址(即内存位置)。

变量名a1即为指向该具体内存位置的引用名称。

可通过type()函数查看对象的类型。

其值即为字符串内容'abc'。

自定义类型需使用class关键字定义。

对象的类型决定了其内部表示方式及支持的方法与操作。

创建特定类型的对象时,该对象称为该类型的实例。实例一旦创建,其身份和类型即固定不变。

容器:指包含对其他对象引用的对象。

对象拥有特定的数据属性和方法,通过点运算符(.)进行调用。

数据属性:即变量。

方法属性:即函数。

1) 对象的身份和类型

两个对象比较包含以下三种情况:

1、值比较:判断对象中的数据内容是否相同;

2、身份比较:判断两个变量名是否引用同一个对象;

3、类型比较:判断两个对象的类型是否一致;

注意:

内置函数id()用于返回对象的身份,即在内存中的地址。

is运算符用于比较两个对象的身份。

type()函数返回对象的类型。

示例:

>>> num1 = 5
>>> num2 = 6
>>> num1 == num2 值比较
False  
>>> num1 is num2 身份比较
True
>>> type(num1) is type(num2) 类型比较
True

2)核心数据类型

数字类型:int, long, float, complex(复数), bool。

字符类型:str, unicode。

列表:list。

字典:dict。

元组: tuple。

文件:file。

其他类型:集合(set), frozenset, 类类型, None。

3)类型转换

str(), repr()或format():将非字符型数据转换为字符串; int(): 转换为整数 float(): 转换为浮点数 list(s): 将字符串s转换为列表 tuple(s): 将字符串s转换为元组 set(s): 将字符串s转换为集合 frozenset(s): 将字符串s转换为不可变集合; dict(d): 创建字典;其参数d必须是(key, value)的元组序列

示例:

>>> str1 = 'hello,fanison'
>>> list(str1)
['h', 'e', 'l', 'l', 'o', ',', 'f', 'a', 'n', 'i', 's', 'o', 'n']
>>> tuple(str1)
('h', 'e', 'l', 'l', 'o', ',', 'f', 'a', 'n', 'i', 's', 'o', 'n')
>>> set(str1)
set(['a', 'e', 'f', 'i', 'h', 'l', 'o', ',', 's', 'n']) 特别注意!!!去重
>>> l1=[('a',1),('b',2),('c',3)]
>>> list(l1)
{'a': 1, 'c': 3, 'b': 2}

补充例题:

>>> a = 'ABC'
>>> b = a
>>> a = 'XYZ'
>>> print a b
'XYZ' 'ABC'

图解过程

4)数字类型操作

5种数字类型:整型、长整型、浮点型、复数、布尔型。

所有数字类型均不可变。

>>> a = 10# 整型 >>> b = 1.5 # 浮点型 >>> c = True # 布尔型 >>> d = 5+2j # 复数

示例:

>>> 1 + 2
3
>>> 1.0 + 2
3.0
>>> 11 % 4
3
>>> 11.0 / 4 
2.75

整数和浮点数混合运算的结果为浮点数。

5)布尔类型

bool(布尔型)属于数字类型,因为bool是int的子类。

>>> int(True)
1
>>> int(False)
0
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(0)
False

结论:

bool 转 int时, Ture-->1, False-->0 int 转 bool时, 非0-->True, 0-->False

与运算:仅当两个布尔值均为 True 时,计算结果才为 True。

>>> True and True 
 True
 >>> True and False
 False
 >>> False and True
 False
 >>> False and False
 False

或运算:只要有一个布尔值为 True,计算结果即为 True。

>>> True or True
 True
 >>> True or False
 True
 >>> False or True
 True
 >>> False or False
 False

非运算:将True变为False,或将False变为True:

 >>> not True
 False
 >>> not False
 True

注意:1、任何非0数字和非空对象在布尔上下文中均为真;

2、数字0、空对象和特殊对象None均为假;

and 和 or 运算遵循一条重要法则:短路计算。

1. 在计算 a and b 时,如果 a 为 False,根据与运算法则,整个结果必为 False,因此直接返回 a;如果 a 为 True,则整个计算结果取决于 b,因此返回 b。

2. 在计算 a or b 时,如果 a 为 True,根据或运算法则,整个计算结果必为 True,因此直接返回 a;如果 a 为 False,则整个计算结果取决于 b,因此返回 b。

因此Python解释器在执行布尔运算时,若能提前确定结果,便不再继续计算,直接返回结果。

示例:

>>> a = 'python'
>>> print 'hello,', a or 'fanison'
hello,python
>>> b = ''
>>> print 'hello,', b or 'fanison'
hello,fanison

以上这篇Python对象类型及其运算方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表