Python数据类型之“数字(numerics)”
上一节内容说的是“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这四种内置数据类型。为了避免篇幅过长,我们将对它们分别进行说明。
数字类型(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数据类型之“数字(numerics)”的更多相关文章
- 【转】Python数据类型之“数字(numerics)”
[转]Python数据类型之“数字(numerics)” 上一节内容说的是“Python基本语法”,本节主要讲下Python中的数据类型. 存储在内存中的数据通常有两个属性: 在内存中的存放位置:这个 ...
- Python数据类型-01.数字和布尔值
本节主要介绍Python中的基础知识中的数据类型,数字和布尔值 介绍几个知识点:1)内置函数print()的用法,直接打印括号里面的内容,或者print后跟多个输出,以逗号分隔.2)内置函数type( ...
- 4. Python数据类型之数字、字符串、列表
开发过程中,我们需要处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型主要有以下几种:数字.字符串.列表.元组.字典.集合等 ...
- Python数据类型(数字)
文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 变量类型 变量存储在内存中的值.这 ...
- Python数据类型-2 数字类型
数字类型 数字类型是不可变类型.所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象.数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象. 还是要强调一 ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之数字类型(number)
Python 数字类型(number)用于存储数值.数据类型是不允许改变的,这就意味着如果改变number数据类型的值,将重新分配内存空间. 1. 一个简单的示例: # 以下实例在变量赋值时数字类 ...
- Python数据类型(数字和字符串)
1.1 Number(数字) Python可以处理任意大的整数,包括负整数. 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的.,比如,\(1.23\ti ...
- Python数据类型之数字
数字(数值) 整数 :123 (int型) 浮点数: 0.25(带小数点的数字即为浮点数,Float型) 布尔值:False,True(即0和1,bool型) 复数 (暂无资料,complex型) 整 ...
- Python数据类型之数字类型
整数 在Python中,整数可以执行 加(+)减(-)乘(*)除(/) 运算. 1 + 2 3 - 2 2 * 3 3 / 2 # 1.5 在控制台,Python直接返回运算结果. Python中也可 ...
随机推荐
- [1002]prime
输入一个数,判断其是否为素数: 本题有多组测试样例. 输入规则如下: 第一行为一个整数,样例组数T: 第二至第t+1行每行都有一个整数a(a >= 2),表示需要处理的数: 如果是素数则输出“y ...
- 浅析C语言指针问题
首先明白c语言操作符的优先级及结合性就很容易理解了. 链接 1.关于char *s 及 char s[] char *s指向的是一个字符串对象的指针,可以理解为间接引用,比如 char *s = “1 ...
- 头部加mead(便于seo优化)
<meta name="Keywords" content="关键词,关键词" /> <meta name="description ...
- python安装MySQLdb模块
以Ubuntu下安装为例: 下载地址:https://pypi.python.org/pypi/MySQL-python/ 解压后直接进入解压目录运行安装命令. python setup.py ins ...
- 微信公众号 扫码支付 模式二 demo
扫码支付 本文附有代码,在下方,如果不熟悉场景的可以看看下面的场景介绍 场景介绍 官网介绍地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?ch ...
- Java使用velocity导出word
效果展示: 使用word编辑好模板
- Remote Desktop Connection Manager (RDCMan)
当前最新版本是 v2.7. 通过这款软件,我们便可以轻松的管理和访问数个RDP.左边的列表中我们可以创建总的分区列表(即 RDCMan Group),该列表保存采用的是RDG扩展名,使用时通过&quo ...
- 【转载】解决Windows 10 局域网内共享的问题
问题: 小米盒子,iPhone (OS 10.2) 无法访问 Win 1o共享 解决方案: 原文链接 http://www.dedoimedo.com/computers/windows-10-net ...
- Restful.Data v1.0 - 轻量级数据持久层组件, 正式开源发布了
经过几个星期的优化调整,今天 Restful.Data 正式开源发布. 源码地址:https://github.com/linli8/Restful 今天不写那么多废话了,还是重新介绍一下 Restf ...
- .Net Core下如何管理配置文件
一.前言 根据该issues来看,System.Configuration在.net core中已经不存在了,那么取而代之的是由Microsoft.Extensions.Cnfiguration.XX ...