连接不同类型数据的python最佳实践有哪些?

连接不同类型数据的python最佳实践有哪些?,python,concatenation,Python,Concatenation,我想生成包含字符串长度和字符串内容的字节序列。 例如,对于字符串'hello'我想得到b'\x05hello' 阅读了一些文档后,我编写了一个函数: def LenAndStrBytes(strdata): return bytearray([len(strdata)&0xFF])+strdata if strdata!=[] else 0 问题: 我是python编程新手,我想知道,连接不同类型的数据(如int和类似bytearray 我的函数写得最好了吗?正如拉斯曼指出的,这取

我想生成包含字符串长度和字符串内容的字节序列。
例如,对于字符串
'hello'
我想得到
b'\x05hello'

阅读了一些文档后,我编写了一个函数:

def LenAndStrBytes(strdata):
  return bytearray([len(strdata)&0xFF])+strdata if strdata!=[] else 0
问题:
我是python编程新手,我想知道,连接不同类型的数据(如
int
和类似
bytearray


我的函数写得最好了吗?

正如拉斯曼指出的,这取决于你的用法。如果您可以得到代码清晰且满足上下文限制的结果,那么这是一个很好的实践,非常适合

无需进行
&0xFF
,通过数组检查确保值介于0和255之间

>>> strdata = 'hello'
>>> bytearray([len(strdata)]) + strdata if strdata else bytearray()
bytearray(b'\x05hello')
你也可以

import struct
bytearray(struct.pack('B%ds' % len(strdata), len(strdata), strdata))

在将二进制数据写入文件(或通过网络发送)之前,是否尝试序列化二进制数据


您是否打算将用于数据序列化?

没有“最佳实践”,因为您几乎不需要这样做,当您这样做时,将实现一些文件格式或网络协议,以规定适当的约束条件。停止尝试用Python编写C。;)另外,不要对行继续使用“反斜杠”语法-直到我读了三遍才意识到这实际上是一行代码。
0xFF
实际上是危险的,因为它为
len(strdata)>255
给出了错误的结果,而您的版本将引发异常。注意
@larsmans谢谢,修复了