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里大整数相乘相关技巧指南
Sep 12 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
May 25 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
利用PyTorch实现VGG16教程
Jun 24 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
selenium如何定位span元素的实现
Jan 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
python简单判断序列是否为空的方法
2015/06/30 Python
python如何爬取个性签名
2018/06/19 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
毕业生个人求职信范例分享
2013/12/17 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
2015年财务部工作总结
2015/04/10 职场文书
小学见习报告
2015/06/23 职场文书