Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import functools
- '''
- Функция сериадизет объект в компактное строковое представление
- Если @pack.register(int) и @pack.register(list) не вернут True то сработает assert в первом блоке
- '''
- @functools.singledispatch
- def pack(obj):
- type_name = type(obj).__name__
- assert False, "Unsupported type " + type_name
- @pack.register(int) # wait int object
- def _(obj):
- return b"I" + hex(obj).encode("ascii")
- @pack.register(list) # wait list object
- def _(obj):
- return b"L" + b",".join(map(pack, obj))
- print(pack([1,2,3])) # b'LI0x1,I0x2,I0x3'
- print(pack(2)) # b'I0x2'
- print(pack(2.0)) # AssertionError: Unsupported type float
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement