uuid 模块 : 生成全局唯一的id
import uuid
print(uuid.uuid1()) # 32位 ,通过多个随机算法生成,
print(uuid.uuid4()) # 通过随机算法生成
print(uuid.uuid3(uuid.NAMESPACE_DNS,"ABC")) # 通过 md5 不变
print(uuid.uuid5(uuid.NAMESPACE_DNS,"ABC")) # 通过 cha 不变
repr() 将数据转换成二进制
高级装饰器应用 权限管理
user_permission = 15
# 权限计算 二进制 位与运算
delete_permission = 1 # 0001 & 1001 ==> 0001 有权限
add_permission = 2 # 0010 & 1001 ==> 0000 # 无
change_permission = 4 # 0100 &1001 ==> 0000 # 无
check_permission = 8 # 1000 &1001 ==>1000 # 无
def permission(x, y):
def handle_action(fn):
def do_action():
if x & y:
fn()
else:
print("没有权限")
return do_action
return handle_action
@permission(user_permission,delete_permission)
def delete():
print("执行删除")
@permission(user_permission,change_permission)
def change():
print("执行修改")
@permission(user_permission,check_permission)
def check():
print("执行查看")
@permission(user_permission,add_permission)
def add():
print("执行添加")
add()
delete()
change()
check()
正则表达式
- match(a,b) : 在b中从头开始匹配第一次a,不存在返回None
- search(a,b) : 在b中匹配一次a,不存在返回None
- findall(a,b) :在b中匹配全部的a,用列表保存, 不存在返回[]
- finditer(a,b) : 在b中匹配全部的a,用一个可迭代对象保存
网络通信
import socket
#不同电脑之问的通信需要使用socket
#socket可以在不同的电脑问通信;还可以在同一个电脑的不同程序之问通信
#1.创建socket,并连接
#AF_INET:表示这个socket是用来进行网络连接#S0CK_DGRAM:表示连接是一个udp连接
s = socket.socket ( socket.AF_INET, socket. soCK_DGRAM)
#2.发送数据
#data:要发送的数据·它是二进制的数据
#add ress :发送给谁﹐参数是一个元祖﹐元组里有两个元素#第0个表示目标的ip地址·第1个表示程序的瑞口号
#给192.168.31.199这台主机的9000端口上发送了hello
s.sendto( ' hello'.encode( 'utf8'),( '192.168.31.199', 9000 ) )
#关闭socket