整数 int
整型数是不带小数部分的数字,包括负整数、0、正整数 在这里插入代码片
在python中,整数的表示跟数学的表示一样,如:-1、0、1等
日常使用中,我们习惯用十进制表式
>>> 10
10
>>> -100
-100
在我们实际工作中也很容易需要使用大数据,如: 100000000
碰到大数据,阅读时可能不是那么直观,python支持数字中间以_分隔
上述数据也可以这样表示:
>>> 1_0000_0000
100000000
>>> 100_000_000
100000000
除上述表示,也可以使用二进制、八进制、十六进制来表示
二进制表示,零+b开头,后面接0或1的数,如:
>>> 0b11
3
>>> 0b10
2
八进制表示,零+o开头,后面接0~7的数(不在这个范围,会触发异常),如:
>>> 0o71
57
>>> 0o11
9
十六进制表示,零+x开头,后面接09、AF、a~f,如:
>>> 0xAF
175
>>> 0x3aF
943
浮点型数 float
浮点型数是带有小数部分的数字
如:3.14、 3. 、0.14
>>> 3.
3.0
>>> 3.14
3.14
>>> .14
0.14
由于数据在计算机中,都是以二进制的方式存储的,大多数的十进制小数都不能精确地表示为二进制小数,浮点数都只能近似地使用二进制小数表示
以需要1/3 为例,我们无法用小数成功表示,只能无限接近,如:0.3、0.33、0.33…,,位数越多,越接近 1/3
从上面可以知道,如果使用浮点数进行计算,有可能会导致精度的丢失,每次浮点运算都可能会导致新的舍入错误,如下面的例子:
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
>>> 1 / 10 - 0.01
0.09000000000000001
使用浮点数做比较也可能产生意想不到的结果,比如 1 跟 1.0,一个是整数,一个是浮点数,在我们思维下他们肯定是不相等的
>>> 1 == 1.0
True
而我们的交互式产生的结果为真,这是因为计算机在比较1跟1.0时,实际上是拿他们转换成二进制之后做比对产生的结果
通过上面示例,我们不难发现使用浮点存在的问题,但也可以不用担心,Python 浮点运算中的错误是从浮点运算硬件继承而来,大多数机器上每次浮点运算得到的 2**53 数码位都会被作为 1 个整体来处理,基本满足我们正常使用
思考?
问:从上面我们都知道浮点数使用中的问题,那么在日常前后端交互、后端开发,需要使用浮点数,有没有什么技巧可以避免这种精度丢失呢?
答:在日常开发及数据传输过程中,我们可以使用放大的整数来避免这种精度丢失带来的问题举个例子:
用户身上有一个money字段,记录用户身上有多少钱,那么这个钱就有可能是浮点,比如100.33块钱, 剩下的3毛3分便是小数部分
我们后端可以将这个100.33 记录成 10033, 发给前端时也是发送 10033,前端仅在展示时除100,这样就避免了传输时的进度丢失
用户消费1分钱,我们不在需要扣减0.01这样的数,后端就可以直接 money -= 1, 这样就避免了浮点运算时的精度丢失
布尔值 bool
用来表示真和假两个状态
True 表示真(条件满足或者成立)
False 表示假 (条件不满足或者不成立)
bool 值在我们常见的对比或者比较中出现, 如:
>>> 2 > 3
False
>>> 2 < 3
True
特别说明:
bool其实也是用数字1、0来表示的
True 值为 1
False 值为 0
我们也可以直接拿bool值进行运算
>>> True + 1
2
>>> False - 1
-1
空值 None
空值是python的一个特殊值,也为假,但不能理解为False或者0, 因为False和0是有意义的
None 通常用来占位或者解除绑定
变量 variable
变量是存储在内存中的值,创建变量时会在内存中开辟一个空间,存储变量绑定的对象
python是动态语言,在创建变量时,不需要提前声明变量的数据类型
python 建议使用pep8 命名风格
建议变量的命名规范:
1、变量建议用小写单词和下滑线连接, 如: max_value
2、不能使用python关键字命名,如: if 、else、True …
3、变量名尽量见名知意
赋值语句
用于创建变量并将变量绑定(或关联)在一个对象上
变量名 = 表达式
变量名1 = 变量名2 = 表达式
变量名1 ,变量名2,… = 序列
>>> a = 1
>>> b = 2
>>> a
1
>>> b
2
>>> c, d = 3, 4
>>> c
3
>>> d
4
python 的赋值语句支持在不创建第三个变量的情况下,对变量进行交换操作, 如:
>>> a = 1
>>> b = 2
>>> a, b = b, a
>>> a
2
>>> b
1