1、内置数据类型—基本算数运算符
一、最基本四种内置数据类型:
整数:int
浮点数:float
布尔型:bool
字符串型:str
变量没有类型,但是对象都有类型:
二、数字和基本运算符

|
c = True |
使用divmod()函数同时得到商和余数:divmod(13,3)-----(4,1)
Divmod()是一个函数,他返回的是一个元祖(后续学习)
2、整数
Python的整数,可以无限大
一、三种进制
Python中,除了十进制,还有其他三种进制
- 0b或0B,二进制 0 1
- 0o或0O,八进制 0 1 2 3 4 5 6 7
- 0x或0X,十六进制0 1 2 3 4 5 6 7 8 9 a b c d e f
|
二、使用int()实现类型转换
- 浮点数直接舍去小数部分。如:int(9.9)结果是:9
- 布尔值True转为1,False转为0。 如:int(True)结果是1
- 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错
|
d = int(9.8) |
自动转型:
整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0的结果是10.0。
整数可以任意大:
Python2中,int是32位,可以存储从-2147483648到2147483647的整数(约±21亿)。Long类型是64位,可以存储:-2^63--2^63-1之间的数值。
Python3中,int可以存储任意大小的整数,long被取消。我们甚至可以存储下面的值:
|
|
3、浮点数
一、表示:
- 浮点数用科学计数法表示。比如:3.14,表示成:314E-2或者314e-2
- 这些数字在内存中也是按照科学计数法存储。
二、类型转换:
- 类似于int(),我们也可以使用float()将其他类型转化成浮点数。
- 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0的结果是10.0
- round(value)可以返回四舍五入的值。但不会改变原有值,而是产生新的值
三、增强型赋值运算符:
运算符+、-、*,/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”。

- “+=”中间不能加空格!
- 结合的是右侧整个表达式:
y *= x+2 # 相当于:y = y*(x+2) 而不是:y = y*x+2
|
a = 3.14 |
4、时间的表示
时间也是数字
一、计算机时间的起点:
计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒(1/1000秒)进行计算。我们也把1970年这个时刻称为“unix时间点”。
这样,我们就把时间全部用数字来表示了。
二、Python中的时间
python中可以通过time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000毫秒)精度的浮点值。例如:1635063628.5632517
|
import time |
5、练习题(计算俩点距离)
定义多点坐标绘出折线并计算起始点和终点距离
|
import math |
6、布尔值
Python2中没有布尔值,直接用数字0表示False, 用数字1表示True。
Python3中,把True和False定义成了关键字,但他们的本质还是1和0,甚至可以和数字相加。
在Python语言底层,会将布尔值True看作1,将布尔值False看作0,尽管从表面上看,True和1、False和0是完全不同的两个值,但实际上,它们是相同的。
在Python语言中有一些特殊的布尔类型值为False,例如False、0、0.0、空值None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空range对象、空迭代对象。其他情况,均为True。
|
a = True |
7、运算符
一、逻辑运算符(短路)
与、或、非

二、比较运算符
所有比较运算符返回1表示真,返回0表示假。这分别与特殊变量True和False等价。
以下假设变量a为15,变量b为30:

三、位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如表所示。

|
a = 0b11001 b = 0b01000 print(bin(a|b)) #bin()可以将数字转成二进制表示 '0b11001' print(bin(a&b)) #与 print(bin(a^b)) #异或 print(3<<2) #左移1位相当于乘以2.左移两位相当于:3*4 print(20>>1) #右移移位相当于除以2 |
四、加法操作的补充
- 数字相加 3+2 结果是 5
- 字符串拼接 “3”+“2”结果是 “32”
- 列表、元组等合并 [10,20,30]+[5,10,100]结果是[10,20,30,5,10,100]
五、乘法操作的补充
- 数字相乘 3*2 结果是 6
- 字符串复制 “sxt”*3 结果是 ”sxtsxtsxt”
- 列表、元组等复制[10,20,30]*3 结果是 [10,20,30,10,20,30,10,20,30]
六、增强赋值运算符
复合赋值可以让程序更加精炼,提高效率。

七、同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
== 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法。
八、整数缓存问题
- 命令行模式下,Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来C语言底层用数组实现,连续分配空间,便于查找,而并非是所有整数对象。
- 文件模式下,所有数字都会被缓存,范围是:[-无穷大,+无穷大])
- 缓存实现:[-5,256]仍然底层用数组实现;不在[-5,256]出现的数,缓存到链表中,不连续分配空间。
总结
- is 比较两个对象的 id 值是否相等,是否指向同一个内存地址
- == 比较的是两个对象的内容是否相等,值是否相等
- is 运算符比 == 效率高,在变量和None进行比较时,应该使用 is
九、成员运算符
成员运算符测试实例中包含了一系列的成员,包括字符串,列表或元组。

|
a = "python" b = "py" print(b in a) #True c = [10,20,30] print(10 not in c) #False |
十、运算符优先级

实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。
- 乘除优先加减
- 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符
十一、基本运算符的总结

438

被折叠的 条评论
为什么被折叠?



