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爬虫的基本写法
Jan 08 Python
Python编程pygal绘图实例之XY线
Dec 09 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
python常用函数与用法示例
Jul 02 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
Python @property装饰器原理解析
Jan 22 Python
python matplotlib实现将图例放在图外
Apr 17 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
Pytest中skip skipif跳过用例详解
Jun 30 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
Vue项目中跨域问题解决方案
2018/06/05 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
python中map的基本用法示例
2018/09/10 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
HTML5表单验证特性(知识点小结)
2020/03/10 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
《都江堰》教学反思
2014/02/07 职场文书
项目施工员岗位职责
2014/03/09 职场文书
护理专科学生自荐书
2014/07/05 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python