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搜索指定目录的方法
Apr 29 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
flask框架中勾子函数的使用详解
Aug 01 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
Jan 05 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
python基于property()函数定义属性
Jan 22 Python
基于Python测试程序是否有错误
May 16 Python
如何表示python中的相对路径
Jul 08 Python
如何基于Python按行合并两个txt
Nov 03 Python
Python中threading库实现线程锁与释放锁
May 17 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
php生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python实现八大排序算法(1)
2017/09/14 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
建筑文秘专业个人求职信范文
2013/12/28 职场文书
优秀教师工作感言
2014/02/16 职场文书
志愿者活动总结报告
2014/06/27 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
走近毛泽东观后感
2015/06/04 职场文书
地心历险记观后感
2015/06/15 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
Python函数对象与闭包函数
2022/04/13 Python