Python 数字类型,稍不注意就歪。
共 2790字,需浏览 6分钟
·
2022-04-12 12:25
编程语言的学习,总绕不过它的基本对象类型。
这里的“对象”不是你的对象,是编程语言的对象(Object),你可以把它理解为一块内存,保存的是它们所代表的值。
如果还理解不了,你就把它想成是你手边的一个物件(值),这个物件占据着一块立体的空间(内存)。
在 Python 的世界中,流传着“万物皆对象”的传说,是对象就肯定由类型,就和我知道你是个人,可是我得知道你是个什么性别的人一样。
基本对象类型的还得从它的基本数据类型开始说起。
Python 在计算机中操作数据的格式叫做数据类型。在 Python 中,基本的数据类型主要有整数、浮点数、字符串、布尔值。
这篇文章主要讲和数字相关的整数和浮点数。讲到“数字”,这些都是很简单的东西,不过以此延伸出来的一些知识点还是值得注意的。
话不多说,直接开始。
在 Python 中,对数字的设定很简单,只要不是憨憨就能学会。
整数和浮点数构成了 Python 中的数字类型。
整数
整数就是那个整数,比如 1,2,-1,-2 and so on。
在 Python 里,整数用 int 表示。
在 Python 中,整数比起其他编程语言省心的是它不需要区分整型,长整型什么的,它就是一个整型。不管你输入多么大的数字它永远会输出相应的数字,不会出现溢出的问题。
数据溢出是指要表示的数据超出了数据所能表示的范围。
不太懂也没关系,你可以理解成在 Python 中的整数就是,在电脑内存允许的情况下,你随便输入多少位的数字都行,不管输入多大的数 Python 都能 hold 的住。
浮点数
浮点数就是我们认识的小数,比如1.1,2.2222222222 and so on。
虽然说这样说不太严谨,因为整型也可以用浮点型表示,但是初期的话你可以先这么了解着。
在 Python 里,浮点数用 float 表示,同样它比起其他编程语言来好的是它不需要区分单精度和双精度,它就是一个浮点型。
111111111111111111111111111111111 #整数 >
111111111111111111111111111111111
2.2222222222222222222222 #浮点数 >
2.2222222222222223
3333333333333 > -
-3333333333333
4.444444444444444444444 > -
-4.444444444444445
在 Python 中,如果你想知道你看到的东西是个什么类型,可以通过 type() 函数。
变量
还记得我在文章开头所讲的对象嘛,上面例子的一个个整数或者浮点数就是一个个对象。
每个对象必然在内存中有一个属于自己的地址,这就和家里的门牌号一样。
在 Python 中,一般用 id() 函数来查看每个对象的“门牌号”(即内存地址)。
你看上图中,第 1个数和第 2 个数输出的结果不同,这就证明它们俩的门牌号不一样,不是一家人(即不是同一个对象)。
说到这,有一点大家要和现实区别开来:在我们正常的认知里,100 和 100.0 是一个东西,但在 Python 中却不是。
看到上图输出的结果了么?两个输出值不相等,那证明这俩不是一家人。
仅仅知道一个个整数或者浮点数是对象,单独来看是没什么意思的。
编程语言中,对象是要和变量建立相应的关系,捆绑起来用才是有意义的。
像上图 a 就是变量,1 这个数是变量,二者之间建立了关系。
这个关系是怎么建立的呢?且听我详细讲来。Python 在执行 a = 1 这个赋值语句的时候,进行了 3 步:
先是创建一个代表值 1 的对象,然后再创建一个变量 a,最终将变量 a 和对象 1 连接,下面我用一个图更清晰的表示一下:
由上图我们可以看出,变量 a 其实变成了对象 1 的一个引用。
如果你知道指针的话,你就会发现在内部:变量其实就是到对象内存空间的一个指针。
再来看一个例子:
上面的例子 a = 1 我们是在变量 a 和数字 1 之间建立了联系,所以之后单独输入 a 的时候,它输出的是 1。
紧接着我又让 a = 2.1 ,这是让 a 和 2 之间建立了联系,再输入 a ,此时的 a 为 2.1。
这是 Python 一个非常好的功能,那就是变量无类型。
一开始 a = 1 的时候 a 自动的就是整型,后来让 a = 2.1 的时候,a又成了浮点型,不像 C/C++ 等编程语言一样,在写之前还要先定义变量的类型。
数据运算
数据运算就是我们所熟悉的加减乘除四则运算,外加取余、指数等操作。
四则运算
这里的加减乘除和我们现实中学的加减乘除大致一样,只有些许差别,毕竟 Python 里的数字是分类型的。
下面我们举个例子来说一下:
1 + 2 >
3
1.0 + 2 >
3.0
1.0 + 2.0 >
3.0
相信眼尖的小可爱已经看出来了,差别就是你的运算符两侧只要有一个是浮点数,那么你这个就是浮点数,只有整数 + 整数 = 整数。
上面这条规律在除法中不太适应:在 Python 中,整数 / 整数 = 浮点数,有人可能问为啥这样,别问,问就是规定。
4 / 2 >
2.0
5 / 2 >
2.5
整除操作
如果两数相除你想得到一个整数,可以用整除操作。
整除操作的符号是 // ,当除不尽的时候显示的只是整数,而没有小数点后面的部分。
>>> 3 // 2
1
>>> 10 // 3
3
取余操作
余数操作的符号是 % 。
5 % 2 >
1
7 % 4 >
3
指数操作
指数操作的符号是 **, x ** y 代表 x 的 y 次方。
2 ** 3 >
8
5 ** 2 >
25
指数操作中,浮点数的操作和整数不太一样,浮点数的指数操作产生特别大或者特别小的数,输出的结果通常会以“科学计数法”的形式表示。
>>> 9.9 ** 100
3.6603234127323083e+99
其中 e+99 表示 10 的 99 次方。
而且在 Python 中,浮点数存在取值范围,当输出的数超出了取值范围,就会数据溢出。
9.9 ** 999.9 >
Traceback (most recent call last):
File "
" , line 1, in <module>OverflowError: (34, 'Result too large')
所以,在 Python 中遇到浮点数的操作,一定要慎之又慎!
四舍五入
Python 中的四舍五入可以通过函数 round() 来实现。
>>> round(1.23456, 2)
1.23
>>> round(1.23456, 3)
1.235
好啦,Python 数字类型到这基本就结束啦。
如果觉得有帮助的话,记得帮我分享一下,点赞再看的加持是我写作的小马达。