我很遗憾我做错了什么......我现在在网上搜了几个小时,试图重新格式化我的代码,现在我感到卡住了。
这是我的代码:
import httplib
import json
urlBase = 'amoeba.im'
token = False
username = raw_input('Username? ')
connection = httplib.HTTPConnection(urlBase)
def get(url):
connection.request("GET", url)
response = connection.getresponse()
print response.status, response.reason
print response.read();
if token == False:
token = response.read()
token = token.split('"token":"')[1]
token = token.split('","')[0]
print token
get('/api/login?username=' + username)
get('/api/rooms/join?room=#lobby&token=' + token)
get('/api/postmessage?message=hello%20world&token=' + token)
connection.close()
这是终端输出:
Tyler-Keohanes-MacBook-Pro:~ tylerkeohane$ clear && '/usr/bin/pythonw' '/Users/tylerkeohane/Desktop/chatbot.py'
Username? TgwizBot
200 OK
{"success":true,"username":"TgwizBot","token":"103f6a2809eafb6","users":[{"username":"razerwolf","seen":1338582178260},{"username":"tonynoname","seen":1338582178028},{"username":"arrum","seen":1338582177804},{"username":"Valerio","seen":1338582177504},{"username":"Tgwizman","seen":1338582177258},{"username":"tonynoname2","seen":1338582178004},{"username":"TgwizBot","seen":1338582182219}],"time":1338582182219}
Traceback (most recent call last):
File "/Users/tylerkeohane/Desktop/chatbot.py", line 21, in <module>
get('/api/login?username=' + username)
File "/Users/tylerkeohane/Desktop/chatbot.py", line 15, in get
if token == False:
UnboundLocalError: local variable 'token' referenced before assignment
Tyler-Keohanes-MacBook-Pro:~ tylerkeohane$
有人可以帮忙吗? :(
答案 0 :(得分:6)
线索在这里:
UnboundLocalError: local variable 'token' referenced before assignment
您需要将token
声明为全局:
def get(url):
global token
...
您可能还想考虑避免全局变量,因为它们通常被认为是一种不好的做法。
答案 1 :(得分:1)
您在函数中分配给token
,因此它被视为该函数的局部变量。如错误消息所示,您已尝试在其中包含任何内容之前使用它。
您在函数外声明的token
被本地变量“隐藏”,因此无法访问。
要使其在您的函数中可分配,请将global token
放在def
行之后。
但全局变量通常是设计糟糕的标志。相反,您应该将token
作为参数传递给函数。
如果您只使用requests
模块,您会发现生活更轻松。