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


Posted in Python onJuly 05, 2017

基本要点:

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

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

例:

>>> 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对象类型及其运算方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用reportlab画图示例(含中文汉字)
Dec 03 Python
Python实现单词拼写检查
Apr 25 Python
python关键字and和or用法实例
May 28 Python
Python实现多线程抓取妹子图
Aug 08 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
python判断链表是否有环的实例代码
Jan 31 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
python代数式括号有效性检验示例代码
Oct 04 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
python urllib库的使用详解
Apr 13 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 #Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
Jul 04 #Python
在django中使用自定义标签实现分页功能
Jul 04 #Python
详解django中自定义标签和过滤器
Jul 03 #Python
pygame实现弹力球及其变速效果
Jul 03 #Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 #Python
python中安装Scrapy模块依赖包汇总
Jul 02 #Python
You might like
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
2013/01/17 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
js函数排序的实例代码
2013/07/01 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
javascript关于继承解析
2016/05/10 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
Python实现的爬虫功能代码
2017/06/24 Python
Python3 模块、包调用&路径详解
2017/10/25 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python实现图像全景拼接
2020/03/27 Python
python regex库实例用法总结
2021/01/03 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
Java面向对象面试题
2016/12/26 面试题
新学期教师寄语
2014/04/02 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
教育合作协议范本
2014/10/17 职场文书
死亡证明书样本说明
2014/10/18 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
python四种出行路线规划的实现
2021/06/23 Python
Redis主从复制操作和配置详情
2022/09/23 Redis
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS