数字类型(12)

作者: 程序员夏天 | 来源:发表于2020-01-10 23:37 被阅读0次

数字类型用于存储数学意义上的数值。

数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。

还是要强调一下Python的变量和数据类型的关系,变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念。类似1,[2, 3, 4],“haha”这一类对象才具有数据类型的概念。

例如:

a = 1 # 创建数字对象1

a = 2 # 创建数字对象2,并将2赋值给变量a,a不再指向数字对象1

这里,发生了变化的是变量a的指向,而不是数字对象1变成了数字对象2。初学者可能会比较迷糊,但不要紧,我们努力去明白它。

Python 支持三种不同的数字类型,整数、浮点数和复数:

  1. 整数(Int) :
    通常被称为整型,是正或负整数,不带小数点。Python3的整型可以当作Long类型(更长的整型)使用,所以 Python3没有Python2的Long类型。

例如:1,100,-8080,0,等等。

表示数字的时候,有时我们还会用八进制或十六进制来表示:

十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2。

八进制用0o前缀和0-7表示,例如0o12

Python的整数长度为32位,并且通常是连续分配内存空间的。

>>> id(-2)
1868280800
>>> id(-1)
1868280832
>>> id(0)
1868280864
>>> id(1)
1868280896
>>> id(2)
1868280928

从上面的空间地址看,地址之间正好差32。为什么会这样?因为Python在初始化环境的时候就在内存里自动划分了一块空间,专门用于整数对象的存取。当然,这块空间也不是无限大小的,能保存的整数是有限的,所以你会看到id(0)和id(10000)之间的地址差别很大。

>>> id(0)
1456976928
>>> id(10000)
45818192

小整数对象池:

Python初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使我们在程序里没有创建它,其实在Python后台已经悄悄为我们创建了。

为什么要这样呢?我们都知道,在程序运行时,包括Python后台自己的运行环境中,会频繁使用这一范围内的整数,如果每需要一个,你就创建一个,那么无疑会增加很多开销。创建一个一直存在,永不销毁,随用随拿的小整数对象池,无疑是个比较实惠的做法。

下面我们来验证一下小整数对象池的存在。

>>> id(-6)
45818128
>>> id(-5)
1456976768
>>> id(-4)
1456976800
>>> id(255)
1456985088
>>> id(256)
1456985120
>>> id(257)
45818128

从id(-6)和id(257)的地址,我们能看出小整数对象池的范围,正好是-5到256。

除了小整数对象池,Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。

>>> a = 1000000
>>> id(a)
45818160
>>> del a       # 删除变量a
>>> b = 1000000
>>> id(b)
45818160

上面,我给变量a赋值了整数1000000,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为1000000,再次看下b的内存地址,和以前a存在的是一样的。

del是Python的删除关键字,可以删除变量、函数、类等等。

这一段内容,可能感觉没什么大用,但它对于理解Python的运行机制有很大帮助。

  1. 浮点数(float):
    浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

  2. 复数( (complex)) :
    复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。关于复数,不做科学计算或其它特殊需要,通常很难遇到。

数字类型转换:

有时候,我们需要对数字的类型进行转换。Python为我们提供了方便的内置的数据类型转换函数。

int(x): 将x转换为一个整数。如果x是个浮点数,则截取小数部分。

float(x) :将x转换到一个浮点数。

complex(x) :将x转换到一个复数,实数部分为 x,虚数部分为 0。

complex(x, y): 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。

转换过程中如果出现无法转换的对象,则会抛出异常,比如int("haha"),你说我把字符串“haha”转换为哪个整数才对?

数学计算

对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要导入math这个库,它包含了绝大多数我们可能需要的科学计算函数,如下表。

函数 返回值 ( 描述 )
abs(x) 返回数字的绝对值,如abs(-10) 返回 10
ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5
exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4
log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。
min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。
modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y) x**y 运算后的值。
round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
sqrt(x) 返回数字x的平方根
acos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回欧几里德范数 sqrt(xx + yy)
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x) 将角度转换为弧度

以及两个数学常量:

常量 描述
pi 数学常量 pi(圆周率,一般以π来表示)
e 数学常量 e,e即自然常数(自然常数)。
下面是一些应用展示,注意最后的角度调用方式:

>>> math.log(2)
0.6931471805599453
>>> math.cos(30)
0.15425144988758405
>>> math.cos(60)
-0.9524129804151563
>>> math.sin(30)
-0.9880316240928618
>>> math.sin(math.degrees(30))
-0.4097717985741408
>>> math.sin(math.radians(30))
0.49999999999999994

上一篇:数据类型(11)

下一篇:布尔类型

#同时小编创建了一个Python千人交流群,群里也有Python零基础到进阶资料提供下载,欢迎喜欢学习交流的朋友!!!进群验证:简书

相关文章

  • 数字类型(12)

    数字类型用于存储数学意义上的数值。 数字类型是不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是...

  • DOM节点操作

    节点属性 nodeType 节点的类型,属性值为数字,表示不同的节点类型,共 12 种,只读1= 元素节点2= 属...

  • Python 1 - 内置类型 - 数字类型

    Python 内置类型 - 数字类型 数字类型 Python 中存在三种不同的数字类型,包括整数 int 和 浮点...

  • 第二部分:数据类型

    3.1 数字类型 PostgreSQL支持的数字类型有整数类型、用户指定精度类型、浮点类型、serial类型。 3...

  • Python数字

    数字是编程语言中最基础的数据类型。 数字分类 优先级问题 类型强制转换 1. 数字类型 Python中数字类型:1...

  • 5-10js

    六种数据类型相加生成的数据类型: 数字 + 对象类型 = 字符串 数字 + 字符串类型 = 字符串类型 数字 + ...

  • 数字类型

    在python中数字类型常用于运算和操作对象,下面就来详细讲解. 算数运算符 例如 下表为算数运算符的描述和实例,...

  • 数字类型

    精确度很高的

  • Python的数据类型

    数字类型字符串类型元组类型列表类型文件类型字典类型一 . 数字类型: 整数类型 浮点数类型 复数类型 二. 字符串...

  • 基础类型

    ts 一共12种基础类型 布尔值 boolean 数字 number 字符串 string 数组 numebr[]...

网友评论

    本文标题:数字类型(12)

    本文链接:https://www.haomeiwen.com/subject/sxxvactx.html