Python数据类型之“数字(numerics)”
2016-12-01 21:08
120 查看
上一节内容说的是“Python基本语法”,本节主要讲下Python中的数据类型。
存储在内存中的数据通常有两个属性:
在内存中的存放位置:这个存放位置通过变量名可以找到;
在内存中的存放方式:这个由数据类型决定,如占几个字节的空间、占用空间是否需要连续等。
Python中有很多内置类型(built-in types),内置类型可以理解为构建在Python Interpreter(Python解释器)里面的类型。Python中主要的内置类型有以下几种:
numerics(数字):int、float、complex、bool
sequences(序列/有序集合): str、list、tuple、range
sets(无序集合):set
mappings(映射):dict
classes(类)
instance(实例)
exceptions(异常)
我们主要说下numberics、sequences、sets 和 mappings这四种内置数据类型。为了避免篇幅过长,我们将对它们分别进行说明。
输出结果:
说明
Python2 中的数字类型还包括一个long(长整型),且会自动将超过整型长度的数字转换为长整型(数字最后加上L字母表示长整形)。但是Python3中已经没有long类型了,int和long都叫整型(int)。
bool(布尔型)之所以属于数字类型,是因为bool是int的子类。
结论:
bool 转 int时, Ture->1, False->0
int 转 bool时, 非0->True, 0->False
结论:complex类型 不能强制转换为 int 和 float类型
如果有一个操作数是复数,另一个操作数会被转换为复数
否则,如果有一个操作数是浮点型,另一个操作数会被转换为浮点型
(Python 2)否则,如果有一个操作数是长整形,另一个操作数会被转换为长整型
否则,如果有一个是整型,另一个是布尔型,则布尔型会被转换为整型0或1
否则,两个都是相同数据类型,无需类型转换
存储在内存中的数据通常有两个属性:
在内存中的存放位置:这个存放位置通过变量名可以找到;
在内存中的存放方式:这个由数据类型决定,如占几个字节的空间、占用空间是否需要连续等。
Python中有很多内置类型(built-in types),内置类型可以理解为构建在Python Interpreter(Python解释器)里面的类型。Python中主要的内置类型有以下几种:
numerics(数字):int、float、complex、bool
sequences(序列/有序集合): str、list、tuple、range
sets(无序集合):set
mappings(映射):dict
classes(类)
instance(实例)
exceptions(异常)
我们主要说下numberics、sequences、sets 和 mappings这四种内置数据类型。为了避免篇幅过长,我们将对它们分别进行说明。
数字类型(numerics)
Python3 中的数字支持int(整型)、float(浮点型)、complex(复数)。Python文档中bool(布尔值)不属于数字类型,但是这里也把bool类型放在这里来说,因为bool是int的子类。就像大多是语言一样,Python中的数据类型也是很直观的。我们通过Python内置的type()函数可以查看变量所致的对象类型:a = 10 # 整型 b = 1.5 # 浮点型 c = True # 布尔型 d = 5+2j # 复数 # 也可以同时给多个变量赋值 # a, b, c, d = 10, 1.5, True, 5+2j print(type(a), type(b), type(c), type(d))
输出结果:
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
说明
Python2 中的数字类型还包括一个long(长整型),且会自动将超过整型长度的数字转换为长整型(数字最后加上L字母表示长整形)。但是Python3中已经没有long类型了,int和long都叫整型(int)。
bool(布尔型)之所以属于数字类型,是因为bool是int的子类。
1. 强制类型转换
顾名思义,强制类型转换就是把一个数据类型强制转换为另一数据类型。这里,我们先说下数字类型(int、float、bool、complex)间的相互转换。int与bool类型
在Python解释器的交互式终端通过help(bool)可以查看bool类的完整定义,会发现bool是int类型的子类。另外bool类型只有两个值:True和False,因此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
int、bool与float类型
bool类型可以看作一个特殊的int类型>>> float(5) 5.0 >>> float(True) 1.0 >>> float(False) 0.0 >>> int(5.0) 5 >>> bool(5.0) True >>> bool(0.0) False
int、bool、float与complex
>>> complex(5) (5+0j) >>> complex(5.0) (5+0j) >>> complex(True) (1+0j) >>> complex(False) 0j >>> bool((5+0j)) True >>> bool((0+0j)) False >>> int((5+0j)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't convert complex to int >>> float((5+0j)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't convert complex to float
结论:complex类型 不能强制转换为 int 和 float类型
2. 自动类型转换
自动类型转换是指两个不同类型的操作数参与运算时,Python会先按照以下规则先对其中一个操作数进行自动类型转换,然后再进行运算。如果有一个操作数是复数,另一个操作数会被转换为复数
否则,如果有一个操作数是浮点型,另一个操作数会被转换为浮点型
(Python 2)否则,如果有一个操作数是长整形,另一个操作数会被转换为长整型
否则,如果有一个是整型,另一个是布尔型,则布尔型会被转换为整型0或1
否则,两个都是相同数据类型,无需类型转换
>>> 2 + (5+2j) # 整型转复数 (7+2j) >>> 2.0 + (5+2j) # 浮点型转复数 (7+2j) >>> True + (5+2j) # 布尔型转复数 (6+2j) >>> 2 + 5.0 # 整型转浮点型 7.0 >>> True + 5.0 # 布尔型转浮点型 6.0 >>> True + 2 # 布尔型转整型 3
相关文章推荐
- Python基础(3) - 数据类型:1数字类型
- 【PYTHON笔记】(3) : 数据类型 -- 数字
- Python基础4:数据类型:数字 字符串 日期
- python的数据类型,数字,布尔,字符串
- python实操(5):python数据类型及常用操作,数字、字符串、元组、列表、字典、集合
- python学习笔记4-数据类型-数字
- 以写代学:python 数据类型之数字,位运算符
- Python基础——核心数据类型_数字
- 以写代学:python 数据类型之数字,可用函数
- python学习笔记(1)-Python的数据类型:数字
- Python数据类型之数字类型、字符串类型
- Python新手学习基础之数据类型——数字类型
- Python核心数据类型——数字
- Python数据类型-----数字&字符串
- Python-003-数据类型1--数字、字符串、布尔值
- Python进阶之路---1.4python数据类型-数字
- 走进Python世界(五)数据类型 1.数字(Number)
- Python新手学习基础之数据类型——数字类型
- 3.Python数据类型(1)——数字类型/字符串类型
- python的数字类型学习之数据类型