Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. import functools
  2.  
  3. '''
  4. Функция сериадизет объект в компактное строковое представление
  5. Если @pack.register(int) и @pack.register(list) не вернут True то сработает assert в первом блоке
  6. '''
  7.  
  8.  
  9. @functools.singledispatch
  10. def pack(obj):
  11. type_name = type(obj).__name__
  12. assert False, "Unsupported type " + type_name
  13.  
  14.  
  15. @pack.register(int) # wait int object
  16. def _(obj):
  17. return b"I" + hex(obj).encode("ascii")
  18.  
  19.  
  20. @pack.register(list) # wait list object
  21. def _(obj):
  22. return b"L" + b",".join(map(pack, obj))
  23.  
  24.  
  25. print(pack([1,2,3])) # b'LI0x1,I0x2,I0x3'
  26. print(pack(2)) # b'I0x2'
  27. print(pack(2.0)) # AssertionError: Unsupported type float
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement