python -- 数据类型
数字
- int 整型,在python3中已经没有长整型的概念,在python2中还有长整型。
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1。
在64位机器上,整数的位数为64位,取值范围为-2**64~2**64-1。
这就是为什么32位机器只支持4g内存。
- long 长整型,在ppython2中存在。
- float 浮点型,浮点数用来处理实数,即带有小数的数字。
- complex 复数,复数是由实数部分和虚数部分组成。
布尔值
真或假
True or False
1或0
a = 0
b = 1
if a: # 只有当a为True的时候才会打印下面的代码,由于a=0,所以这句代码不执行
print("False")
if b: #同理,由于b=1,b=True,所以这句代码执行
print("True")
字符串
万恶的字符串拼接
python中字符串在C语言中体现为一个字符数组,每次创建字符串时候需要在内存里开辟一块连续的空间,并且一旦需要修改字符串的话,就需要再再次开辟空间。万恶的+号每出现一次就会在内从中重新开辟一块空间。
操作符
操作符 | 描述 | 实例 | 类型 |
---|---|---|---|
& | 按位与运算 | 位运算 | |
| | 按位或运算 | ||
^ | 按位异或运算 | ||
~ | 按位取反运算 | ||
<< | 左移动运算符 | ||
>> | 右移动运算符 | ||
+ | 加 | 算数运算 | |
- | 减 | ||
* | 乘 | ||
/ | 除 | ||
** | 幂 | 3 ** 3 = 9 | |
// | 取整除,返回商的整数部分 | 9 // 2 = 4 ;9.0 // 2.0 = 4.0 | |
% | 取模,返回除法的余数 | 9 % 2 = 1 ;9.0 % 2.0 = 1.0 | |
< | 小于 | 比较运算 | |
> | 大于 | ||
<= | 小于等于 | ||
>= | 大于等于 | ||
== | 等于 | 返回值是布尔类型 | |
!= | 不等于 | 返回值是布尔类型 | |
<> | 不等于,等同于!= | 返回值是布尔类型 | |
() | |||
[] | |||
{} | |||
@ | |||
' | |||
: | |||
= | 简单的赋值运算符 | 赋值运算 | |
; | |||
+= | 赋值运算 | ||
-= | |||
*= | |||
/= | |||
//= | |||
%= | |||
**= | |||
and | 逻辑运算 | ||
or | |||
not | |||
in | 返回值是布尔类型 | 成员运算 | |
not in | 返回值是布尔类型 | 成员运算 | |
is | 返回值是布尔类型 | 身份运算 |
a = 60 # 60 = 0011 1100
b = 13 # 60 = 0000 1101
c = 0 # 0 = 0000 0000
print(a & b) # 12 = 0000 1100
print(a | b) # 61 = 0011 1101
print(a ^ b) # 49 = 0011 0001
print(a >> 2) # 15 = 0000 1111 右移是在所有的在位置上的1或0统统右移2个单位
print(a << 2) # 240 = 1111 0000
print(b >> 2) # 3 = 0000 0011
bytes数据类型
Python3中将str(字符串)类型和二进制数据区分,二进制数据用bytes(字节包)类型表示。
Python3不再以任何隐式的方式混用str和bytes。所以str和bytes类型不能拼接,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦反)。
sequenceDiagram
String类型->>Bytes类型: encode(编码)
Bytes类型->>String类型:decode(解码)
# c 就是a的二进制格式
a = '我是好人'
b = 'I am a nice guy.'
c= b'\xe6\x88\x91\xe6\x98\xaf\xe5\xa5\xbd\xe4\xba\xba'
# 这里encoding告知系统原来用utf-8编译
print(a.encode(encoding='utf-8'))
print(b.encode())
# 这里encoding告知系统原来用utf-8解码
print(c.decode(encoding='utf-8'))
三元运算
result = 值1 if 条件 else 值 2
- 如果条件为真:result = 值1
- 如果条件为假:result = 值2
# 三元运算
a = 1
b = 3
c = 5
# if a > b,d = a,不然d = c
d = a if a > b else c
print(d)
进制
- 二进制: 01
- 八进制: 01234567
- 十进制: 0123456789
- 十六进制:0123456789ABCDEF
二进制转十六进制的方法
- 取4合1法,即从二进制的小数点为界点,向左(或向右),每4位取成一位。
- 组分成好,对应二进制与十六进制的对应表,将4位二进制按权相加,得到的数一个十六进制数,然后按顺序排列,小数点的位置不变!!
- 最后得到的就是一个十六进制数。
- 16进制的表示法,用字母H后缀表示,比如BH表示10进制的11,也可以用0X前缀表示,比如0X23就是16进制的23(10进制的35)。
- 如果最高位或最低位无法凑足4位,就用0补齐。
十六进制与二进制的对应关系
(每4位表示一个16位)
|16进制|0|1|2|3|
|:--:|:--:|:--:|:--:|:--:|
|2进制|0000|0001|0010|0011|
|16进制|4|5|6|7|
|2进制|0100|0101|0110|0111|
|16进制|8|9|A|B|
|2进制|1000|1001|1010|1011|
|16进制|C|D|E|F|
|2进制|1100|1101|1110|1111|
写在后面
- 计算机中能表示的最小单位,是一个二进制位
- 计算机中能存储的最小单位,是一个二进制位(bit)
- 8 bit = 1 byte(字节)
- 1024 byte = 1 Kbyte
- 1024 Kbyte = 1 Mbyte
- 1024 Mbyte = 1 Gbyte
- 1024 Gbyte = 1 Tbyte