Python UnboundLocalError:局部变量';味精';作业前参考。如何修复它?

Python UnboundLocalError:局部变量';味精';作业前参考。如何修复它?,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,我正在从json文件中获取消息数,但我有一个错误。。。我不知道为什么。在这个程序中,机器人必须发送有关提到的成员的信息。如果我在代码开头写msg=None,它不会像>messages=10那样发送messages=None 节目 我尽我所能尝试了一切。有人能帮我吗?看看你是如何给msg赋值的: if last == 0 or msg1 == 0: msg = '{0} some useless tex'.format(msg1) if msg1 == 1 or (last == 1 an

我正在从json文件中获取消息数,但我有一个错误。。。我不知道为什么。在这个程序中,机器人必须发送有关提到的成员的信息。如果我在代码开头写
msg=None
,它不会像
>messages=10那样发送
messages=None

节目


我尽我所能尝试了一切。有人能帮我吗?

看看你是如何给
msg
赋值的:

if last == 0 or msg1 == 0:
    msg = '{0} some useless tex'.format(msg1)
if msg1 == 1 or (last == 1 and msg1 >= 21):
    msg = '{0} some useless tex'.format(msg1)
if (msg1 >= 2 and msg1 <= 4) or (msg1 >= 22 and msg1 <= 24):
    msg = '{0} some useless tex'.format(msg1)
if (last >= 5 and last <= 9):
    msg = '{0} some useless tex'.format(msg1)

(请注意,将所有这些
if
s更改为
elif
s可能是一个语义上有意义的更改。如果两个条件都为true,则原始代码将同时执行这两个条件,因此第二个条件将覆盖第一个条件,但新代码将只执行第一个条件。如果有区别,这实际上更重要。)通常是您想要的,但如果您想要其他行为,您可能需要重写或重新排序您的条件。)

这不可能是您的实际代码,因为它在达到这一步之前就引发了
SyntaxError
。请给我们一个
msg1>=0:
会抛出一个SyntaxError,所以我不确定您在这里实际运行的是什么代码……等一下问题是
if
语句。因为没有
else
语句,所以您可以在不给任何东西赋值的情况下通过代码的这一部分。老实说,看起来您试图在一个地方做的事情太多了。尝试将代码分解为离散函数(以及适当的协同程序)。这将使您更容易理解您正在做的事情。@PatrickHaugh我将尝试这个方法
File "soul.py", line 497, in on_message
'{5}'.format(member.mention, join, time, msg, highclass, gm))
UnboundLocalError: local variable 'msg' referenced before assignment
if last == 0 or msg1 == 0:
    msg = '{0} some useless tex'.format(msg1)
if msg1 == 1 or (last == 1 and msg1 >= 21):
    msg = '{0} some useless tex'.format(msg1)
if (msg1 >= 2 and msg1 <= 4) or (msg1 >= 22 and msg1 <= 24):
    msg = '{0} some useless tex'.format(msg1)
if (last >= 5 and last <= 9):
    msg = '{0} some useless tex'.format(msg1)
if last == 0 or msg1 == 0:
    msg = '{0} some useless tex'.format(msg1)
elif msg1 == 1 or (last == 1 and msg1 >= 21):
    msg = '{0} some useless tex'.format(msg1)
elif (msg1 >= 2 and msg1 <= 4) or (msg1 >= 22 and msg1 <= 24):
    msg = '{0} some useless tex'.format(msg1)
elif (last >= 5 and last <= 9):
    msg = '{0} some useless tex'.format(msg1)
else:
    msg = '{0} WARNING! UNEXPECTED VALUE!'.format(msg1)