Ошибка при использовании функций в python (Discord.py )

#python #function #discord #discord.py

#python #функция #Discord #discord.py

Вопрос:

Я не могу вызвать функцию из другого файла. Мой код:

 def standard(title, desc, color):
    return color = embeds.colors.   color
    return embed=discord.Embed(title=title, description=desc, color=color)
    return embed.set_footer(text=embeds.settings.footer)
  

Код ошибки:

 Traceback (most recent call last):
  File "C:Usersdef75AppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandscore.py", line 85, in wrapped
    ret = await coro(*args, **kwargs)
  File "C:Usersdef75Desktopdiscordbotnewcogsfun.py", line 22, in _8ball
    await ctx.send(embed=embed)
UnboundLocalError: local variable 'embed' referenced before assignment

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:Usersdef75AppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandsbot.py", line 903, in invoke
    await ctx.command.invoke(ctx)
  File "C:Usersdef75AppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandscore.py", line 855, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:Usersdef75AppDataLocalProgramsPythonPython38-32libsite-packagesdiscordextcommandscore.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: UnboundLocalError: local variable 'embed' referenced before assignment

C:Usersdef75Desktopdiscordbotnew>python main.py
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    from config import *
  File "C:Usersdef75Desktopdiscordbotnewconfig.py", line 24
    return color = embeds.colors.   color
                 ^
SyntaxError: invalid syntax
  

Вся функция находится в классе: embeds.definitions . (Да, это два класса)

И это происходит с любой функцией

Комментарии:

1. вложения должны быть в области видимости. Без дополнительного контекста, некоторые возможности: он должен быть импортирован, на него должна быть ссылка из другого модуля или экземпляра

Ответ №1:

Когда вы используете return функцию в Python, вы не можете использовать ее более одного раза в функции. return возвращает значение и завершает работу функции.

Также вы не можете использовать = in return тоже. Вы можете изменить свой код следующим образом:

 def standard(title, desc, color):
    embed = discord.Embed(title=title, description=desc, color=color)
    embed.set_footer(text=embeds.settings.footer)
    return embed
  

Комментарии:

1. В отправленном мной коде не может быть синтаксической ошибки. В какой строке вы получаете ошибку?

Ответ №2:

Это действительно синтаксическая ошибка. Вы являетесь returning назначением

 return x = y
  

x = y на самом деле не содержит никакого значения, вместо этого оно помещает значение y внутри переменной x , поэтому вы не можете return этого сделать (это does что-то, но give вы ничего не делаете).

Я не понимаю, почему вы возвращаете все эти вещи? Возможно, вы захотите посмотреть, как return это работает.