一文了解Python中的数字类型

2019-06-13 13:39:49 来源:互联网
标签:
数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。
 
还是要强调一下Python的变量和数据类型的关系,变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念 。只有1,[1,2],"hello"这一类对象才具有数据类型的概念。
 
Python 支持三种不同的数字类型,整数、浮点数和复数。
 
 
整数
通常被称为整型,数值为正或者负,不带小数点。python 3的整型可以当做Long类型使用,所以python 3 没有python 2的Long类型。
 
表示数字的时候,有时我们还会用八进制或十六进制来表示:
 
十六进制用0x前缀和0-9,a-f表示,例如:0xff00
 
八进制用0o前缀和0-7表示,例如0o45
 
python的整数长度为16,32位,并且通常是连续分配内存空间的。
 
 
从上面的空间地址看,地址之间正好差16,32。
 
小整数对象池
python初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使我们在程序里没有创建它,其实在Python后台已经悄悄为我们创建了。
 
为什么要这样呢?我们都知道,在程序运行时,包括Python后台自己的运行环境中,会频繁使用这一范围内的整数,如果每需要一个,你就创建一个,那么无疑会增加很多开销。创建一个一直存在,永不销毁,随用随拿的小整数对象池,无疑是个比较实惠的做法。
 
 
从id(-6)和id(257)的地址,我们能看出小整数对象池的范围,正好是-5到256。
 
除了小整数对象池,Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。
 
 
上面,我给变量a赋值了整数100,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为100,再次看下b的内存地址,和以前a存在的是一样的。
 
浮点数
浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
 
复数(complex)
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点。
 
数字类型转换
在某些特定的情况下,我们需要对数字的类型进行转换。python为我们提供了内置的数据类型转换函数。
 
 
转换过程中如果出现无法转换的对象,则会抛出异常,比如int("haha")
 
数学计算
对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要导入math这个库,它包含了绝大多数我们可能需要的科学计算函数,如下表
 
 
例子
 
 
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
如何在U盘安装绿色版嵌入式 Python

一直以来都习惯将各种日常工具和开发环境变为绿色版。portable,一个U盘就能将日常所用到的开发环境和必备资料随身携带,从公司到家里,再也不用背上重重的笔记本,通勤路上也能轻轻松松的听听音乐,看看kindle了。

Google 开源的一个深度学习框架你了解多少?

想必大家都或多或少听过 TensorFlow 的大名,这是 Google 开源的一个深度学习框架,里面的模型和 API 可以说基本是一应俱全.

python入门:什么是set集合
python入门:什么是set集合

set集合是一个无序不重复元素的集,基本功能包括关系测试和消除重复元素。集合使用大括号({})框定元素,并以逗号进行分隔。但是注意:如果要创建一个空集合,必须用 set() 而不是 {} ,因为后者创建的是一个空字典。

玩转Zynq连载9——使用GIT进行工程备份和版本管理1
玩转Zynq连载9——使用GIT进行工程备份和版本管理1

双击“TortoiseGit-1.8.5.0-64bit.msi”进行安装。全部使用默认选项。

直流电源如何实现恒压/恒流电源使用
直流电源如何实现恒压/恒流电源使用

大部分实验室都把直流电源当作恒压/恒流电源使用。记住,电源是一个回馈系统,可以实现特定参数的调节。在恒压条件下,电源的回馈控制回路可以调节电压。在恒流条件下,电源的回馈控制回路可以调节电流。

更多资讯
如何快速在AWorks OS操作系统中开发并稳定应用GPS模块
如何快速在AWorks OS操作系统中开发并稳定应用GPS模块

物联智能时代,GPS定位应用愈发广泛,如何快速应用GPS定位模块,稳定有效的获取定位信息,缩短项目周期是至关重要的。本文就如何快速在AWorks OS操作系统中开发并稳定应用GPS模块进行详细介绍。

嵌入式C语言的指针使用总结

C语言作为嵌入式开发的基础语言已经越来越让工程师们知道它的厉害:可以直接操控寄存器,方便CPU的功能设置;可以直接操作物理地址,并进行位的操作进而达到硬件的操作等等。

2019 Arm人工智能开发者全球峰会圆满举办

2019 第二届Arm人工智能开发者全球峰会今天在上海圆满举办。今年的峰会以“共塑AI精彩未来” (Together, making AI different) 为主题,由上海市徐汇区政府指导,Arm中国及Arm人工智能生态联盟 (AIEC) 联合主办,并得到了多家全球及中国人工智能产业领导企业的大力支持。

红狮控制Graphite® 系列人机界面 (HMI)再添新锐

全球工业自动化与网络领域通信、监测和控制专家美国红狮控制公司,今日宣布其Graphite® 系列人机界面(HMI)再添新成员——12.1英寸 Graphite 户外人机界面(HMI),可满足最严苛阳光条件下的读取应用要求。

嵌入式行业的各类“精通法”让人头大?做好规划解难愁

从事嵌入式开发一年了,有些感想跟大家谈谈。可能很多朋友会像我当初一样,为前途而烦恼,为不知道储备什么知识而苦恼,所以写点东西给这些朋友们提供参考。另外,也可鞭策自己,让自己看到自己的不足,认清以后的发展方向。