将元组传递给函数

时间:2018-12-07 07:32:04

标签: python

我写了一个计算校验和的函数。

Data = ( 0x07, 0x3F, 0x20, 0xCF, 0x44, 0x00, 0x5B, 0x7B, 0x04, 0x77)

hexOrg = 0
hexData = Data
Header = (hexOrg&0xFF00>>16, hexOrg&0xFF, len(hexData))

def bcc(data):
    BCC = 0
    print(data)
    for d in data:
        print(d)
        BCC ^= d
        overflow = (BCC & 0x80) >> 7
        BCC <<= 1
        BCC &= 0xFF
        BCC |= overflow
        BCC &= 0xFF
        return BCC

如果我传入一个元组Header,它将起作用。

BCC = bcc(Header)
print("BCC = %02X" %  BCC)

我尝试传入组成元组的值(无论是元组还是列表),它仅使用第一个元素。

print("BCC = %02X" %  bcc([hexOrg&0xFF00>>16, hexOrg&0xFF, len(hexData)]))
print("BCC = %02X" %  bcc((hexOrg&0xFF00>>16, hexOrg&0xFF, len(hexData))))

如何在不将值分配给变量的情况下执行此操作?

我已经阅读了类似问题的答案,但似乎都不适用于我的代码。

1 个答案:

答案 0 :(得分:1)

由于循环迭代结束时的return语句,它仅使用第一个元素,该语句在处理传入的元组的第一个元素后退出该函数。

尝试将return语句移出for循环。然后,您调用bcc函数的所有3种方法都应相同。