我将Python用于各种工作,并且发现它确实功能强大。问题是我从来没有花时间去正确地学习它,经常被卡住。我现在遇到一个困扰我的问题。
在下面的代码中,我有一个for循环。在每个循环中,我想初始化一个字节列表,追加一个新字节,然后调用一个子例程,该子例程追加另一个字节,然后重复。当循环运行时,似乎永远不会重新初始化列表,因此我不得不添加代码以删除附加的字节。
prot = {
'read_datax' : [0x03,0x06],
}
def getBlock(message):
message.append( sum(message) )
ser.write(message)
length = ord( ser.read(1) )
resp = ser.read(length)
return resp[1:length-1]
cardData = []
for block in range(0, 64, 4):
dataMessage = prot['read_datax'] # This does not happen second time round
dataMessage.append(block)
cardData.append(getBlock(dataMessage) )
dataMessage[2:4] = [] # need to remove bytes appended - why?
如何在每个循环开始时将dataMessage设置回prot ['read_datax']?
更新:谢谢大家的回答,当然是一个新手错误。总而言之,我的代码只是创建对该列表的新引用,而没有进行复制。我需要脱掉我的C帽子!