如何解决Python中只能拼接元组与元组的TypeError错误
解决TypeError: can only concatenate tuple (not "list") to tuple错误
你遇到的错误原因很明确:verified函数里尝试把元组和列表拼接,但Python不允许不同序列类型直接做+操作。具体来说,你传入的d_signer是列表,却要和已转为元组的k_signer、tuple(sha256.encode())这些元组拼接,因此触发类型错误。
有两种简单的解决方式:
方式一:调用函数时转换d_signer为元组
直接复用你已经写好的convert函数,在调用verified时把data['d_signer']转成元组:
is_verified = verified(convert(data['k_signer']), data['d_pk'], convert(data['d_signer']), data['sig'], data['addr'], data['seed'], data['data'])
方式二:在verified函数内部转换d_signer
如果不想修改调用代码,也可以在函数内部把d_signer转成元组后再拼接:
def verified(k_signer, sha256, d_signer, addr_from, seed, data, signature): hash = ( k_signer + tuple(sha256.encode()) + tuple(d_signer) + # 将list转为tuple后再拼接 tuple() + tuple() + tuple() ) return hash
额外提醒
检查下verified函数的参数顺序是否和你传入的参数匹配:
函数定义的参数顺序是k_signer, sha256, d_signer, addr_from, seed, data, signature,但你调用时传入的是convert(data['k_signer']), data['d_pk'], data['d_signer'], data['sig'], data['addr'], data['seed'], data['data']——这里sha256参数对应的是data['d_pk'],addr_from对应的是data['sig'],这可能和你的预期逻辑不符,建议确认参数对应关系,避免后续出现逻辑错误。
内容的提问来源于stack exchange,提问作者l33t
相关产品推荐
相关产品推荐

