常见的内置模块:
加密模块:
### 2.1 hashlib
是一个对数据进行加密的模块。
```python
import hashlib
data = "admin"
obj = hashlib.md5()
obj.update(data.encode('utf-8'))
res = obj.hexdigest()
print(res)
```
在以后咱们开发项目时,密码不要用明文存储。
```
wupeiqi,21232f297a57a5a743894a0e4a801fc3
```
为了防止数据库泄露,用户名和密码全都泄露。
#### 2.1.1 密文匹配(不能反解)
MD5加密,不可反解。
```python
admin -> 21232f297a57a5a743894a0e4a801fc3
```
案例:以后登录时候要进行密文匹配。
```python
user_dict = {
"wupeiqi":"21232f297a57a5a743894a0e4a801fc3"
}
user = input("用户名:") # wupeiqi
pwd = input("密码:") # admin
db_pwd = user_dict.get(user) # 21232f297a57a5a743894a0e4a801fc3
# 将 pwd 进行加密的到密文:21232f297a57a5a743894a0e4a801fc3
```
#### 2.1.3 加盐
```python
import hashlib
data = "admin"
salt = "asidfjaksdkjasdiuofiqjskda91qw3asdf"
obj = hashlib.md5(salt.encode('utf-8'))
obj.update(data.encode('utf-8'))
res = obj.hexdigest()
print(res) # c06b63d965921fe0a8803071b623e4e9
2.random 模块:
import random
# 1.获取随机的整数
v1 = random.randint(1, 20) # 大于等于1; 小于等于20
print(v1)
# 2.获取随机的小数
v2 = random.uniform(1, 10)
print(v2)
# 3.随机抽取1个数
data_list = [11, 22, 33, 44, 55]
v3 = random.choice(data_list)
print(v3)
# 4.随机抽取多个数
data_list = [11, 22, 33, 44, 55]
v4 = random.sample(data_list, 3)
print(v4)
# 5.打乱顺序
num_list = [i for i in range(100)]
random.shuffle(num_list)
print(num_list)
```
json模块:序列化和反序列化
本质上是一种数据格式,以字符串形式存在。
作用:让不同编程语言之间实现数据的相互传输。
```python
import json
info = {'k1': 123, 'k2': (11, 22, 33, 44)}
# python的数据类型转换为JSON格式的字符串
res = json.dumps(info)
print(res) # '{"k1": 123, "k2": [11, 22, 33, 44]}'
```
```python
import json
data_string = '{"k1": 123, "k2": [11, 22, 33, 44]}'
# 将JSON格式的字符串转换为Python的数据类型
res = json.loads(data_string)
print(res)
print(res['k1'])
print(res['k2'])
print(res['k2'][-1])
```
时间相关的包:time,datetime
- 时间戳。
```python
import time
v1 = time.time()
```
- datetime格式
```python
import datetime
v1 = datetime.datetime.now()
print(v1) # datetime类型
```
- 字符串格式
```python
import datetime
ctime_string = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(ctime_string)
```