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

作者:jingxian 时间:2023-08-30 09:11:59 

基本要点:

程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改)

每个对象都有一个身份、一个类型、一个值

例:


>>> 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'

图解过程

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

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

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

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

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,对象类型,运算
0
投稿

猜你喜欢

  • 详解python列表生成式和列表生成式器区别

    2021-09-13 16:15:14
  • FCKEditor网页编辑器 几点使用心得

    2022-06-25 17:09:34
  • MySQL存储过程的查看与删除实例讲解

    2024-01-23 06:14:11
  • 让你一文弄懂Pandas文本数据处理

    2023-07-17 19:12:08
  • MySQL 分表分库怎么进行数据切分

    2024-01-14 06:15:29
  • Asp无组件生成缩略图

    2007-10-26 12:08:00
  • Python基础语法之变量与数据类型详解

    2022-06-21 17:52:36
  • pycharm 使用心得(九)解决No Python interpreter selected的问题

    2021-03-03 03:32:11
  • python write无法写入文件的解决方法

    2022-04-02 06:36:02
  • 阿里云OSS实践文件直传基于服务端

    2024-05-13 09:35:27
  • python轻松查到删除自己的微信好友

    2021-06-06 12:31:44
  • element弹窗表格的字体模糊bug解决

    2024-04-18 10:53:25
  • Python读写Excel文件的实例

    2023-03-05 03:25:10
  • 5分钟了解MySQL5.7中union all用法的黑科技

    2024-01-22 16:53:00
  • 不同浏览器所支持的“事件”

    2007-09-26 18:29:00
  • 使用python和Django完成博客数据库的迁移方法

    2022-05-16 03:58:25
  • django框架用户权限中的session缓存到redis中的方法

    2021-10-13 01:09:48
  • 阿里妈妈广告牌制作规范

    2009-07-15 13:23:00
  • 将文本输入框内容加入表中的js代码

    2024-04-28 09:50:40
  • 轻轻松松学习JavaScript

    2024-06-07 15:51:08
  • asp之家 网络编程 m.aspxhome.com