uuid 模块 : 生成全局唯一的id

  1. import uuid
  2. print(uuid.uuid1()) # 32位 ,通过多个随机算法生成,
  3. print(uuid.uuid4()) # 通过随机算法生成
  4. print(uuid.uuid3(uuid.NAMESPACE_DNS,"ABC")) # 通过 md5 不变
  5. print(uuid.uuid5(uuid.NAMESPACE_DNS,"ABC")) # 通过 cha 不变

repr() 将数据转换成二进制

高级装饰器应用 权限管理

  1. user_permission = 15
  2. # 权限计算 二进制 位与运算
  3. delete_permission = 1 # 0001 & 1001 ==> 0001 有权限
  4. add_permission = 2 # 0010 & 1001 ==> 0000 # 无
  5. change_permission = 4 # 0100 &1001 ==> 0000 # 无
  6. check_permission = 8 # 1000 &1001 ==>1000 # 无
  7. def permission(x, y):
  8. def handle_action(fn):
  9. def do_action():
  10. if x & y:
  11. fn()
  12. else:
  13. print("没有权限")
  14. return do_action
  15. return handle_action
  16. @permission(user_permission,delete_permission)
  17. def delete():
  18. print("执行删除")
  19. @permission(user_permission,change_permission)
  20. def change():
  21. print("执行修改")
  22. @permission(user_permission,check_permission)
  23. def check():
  24. print("执行查看")
  25. @permission(user_permission,add_permission)
  26. def add():
  27. print("执行添加")
  28. add()
  29. delete()
  30. change()
  31. check()

正则表达式

  • match(a,b) : 在b中从头开始匹配第一次a,不存在返回None
  • search(a,b) : 在b中匹配一次a,不存在返回None
  • findall(a,b) :在b中匹配全部的a,用列表保存, 不存在返回[]
  • finditer(a,b) : 在b中匹配全部的a,用一个可迭代对象保存

网络通信

  1. import socket
  2. #不同电脑之问的通信需要使用socket
  3. #socket可以在不同的电脑问通信;还可以在同一个电脑的不同程序之问通信
  4. #1.创建socket,并连接
  5. #AF_INET:表示这个socket是用来进行网络连接#S0CK_DGRAM:表示连接是一个udp连接
  6. s = socket.socket ( socket.AF_INET, socket. soCK_DGRAM)
  7. #2.发送数据
  8. #data:要发送的数据·它是二进制的数据
  9. #add ress :发送给谁﹐参数是一个元祖﹐元组里有两个元素#第0个表示目标的ip地址·第1个表示程序的瑞口号
  10. #给192.168.31.199这台主机的9000端口上发送了hello
  11. s.sendto( ' hello'.encode( 'utf8'),( '192.168.31.199', 9000 ) )
  12. #关闭socket