gpt4 book ai didi

python - 未绑定(bind)本地错误 : local variable … referenced before assignment

转载 作者:太空狗 更新时间:2023-10-30 01:54:59 27 4
gpt4 key购买 nike

import hmac, base64, hashlib, urllib2
base = 'https://.......'

def makereq(key, secret, path, data):
hash_data = path + chr(0) + data
secret = base64.b64decode(secret)
sha512 = hashlib.sha512
hmac = str(hmac.new(secret, hash_data, sha512))

header = {
'User-Agent': 'My-First-test',
'Rest-Key': key,
'Rest-Sign': base64.b64encode(hmac),
'Accept-encoding': 'GZIP',
'Content-Type': 'application/x-www-form-urlencoded'
}

return urllib2.Request(base + path, data, header)

错误: 文件“C:/Python27/btctest.py”,第 8 行,在 makereq hmac = str(hmac.new( secret , hash_data, sha512))UnboundLocalError:赋值前引用了局部变量“hmac”

有人知道为什么吗?谢谢

最佳答案

如果您在函数中的任何位置赋值给一个变量,该变量将被视为该函数中任何地方的局部变量。因此,您会在以下代码中看到相同的错误:

foo = 2
def test():
print foo
foo = 3

换句话说,如果同名函数中有局部变量,则无法访问全局或外部变量。

要解决这个问题,只需给局部变量 hmac 一个不同的名称:

def makereq(key, secret, path, data):
hash_data = path + chr(0) + data
secret = base64.b64decode(secret)
sha512 = hashlib.sha512
my_hmac = str(hmac.new(secret, hash_data, sha512))

header = {
'User-Agent': 'My-First-test',
'Rest-Key': key,
'Rest-Sign': base64.b64encode(my_hmac),
'Accept-encoding': 'GZIP',
'Content-Type': 'application/x-www-form-urlencoded'
}

return urllib2.Request(base + path, data, header)

请注意,可以使用 globalnonlocal 关键字来更改此行为,但您似乎不想在您的案例中使用这些。

关于python - 未绑定(bind)本地错误 : local variable … referenced before assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com