我认为这段代码可能是一个dict理解:
payload = {}
for itemID in iter( functools.partial(decodePayload, ID=TAG_BYTE), 0):
itemName = decodePayload(TAG_STRING)
itemPayload = decodePayload(itemID)
payload[itemName] = NBT(
ID=itemID,
payload=itemPayload
)
return payload
decodePayload基本上是一种幻想。下一个是bytearray迭代器的uuu(),它存在于另一个函数中。它根据一个参数决定读取多少字节以及如何解码。它经常递归地调用自身,因为所述数组包含嵌套数据
此代码位于decodePayload函数内部,递归调用该函数直到返回0(这意味着此序列已结束,但bytearray可能未结束)
itemID、itemName和itemPayload绝对需要按顺序读取
我想做的事情可能吗
我会注意到,是的,使用dict理解是可能的,但是您的代码很好,可读性很强,而且是python式的
无论如何,笔直向前
但是,由于
decodePayload
调用的顺序很重要,因此上述最干净的解决方案在3.8以下的Python版本上不起作用从What's New docs开始:
以前,情况并非如此。下面是一个来自Python 3.7解释器的示例:
下面是Python 3.8的固定版本:
要在以前的版本中强制订购,可以执行以下操作:
但老实说,在这一点上,坚持你所拥有的。事实上,我认为你所拥有的一切都很好
相关问题 更多 >
编程相关推荐