#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
это работает.