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中的Numpy入门教程
Apr 26 Python
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
django自带的server 让外网主机访问方法
May 14 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
Python中psutil的介绍与用法
May 02 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
Django跨域请求原理及实现代码
Nov 14 Python
浅谈Python项目的服务器部署
Apr 25 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
一个目录遍历函数
2006/10/09 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
webpack优化的深入理解
2018/12/10 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
解除施工合同协议书
2014/10/17 职场文书
社会实践活动总结
2015/02/05 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
教师节班会主持词
2015/07/06 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python