'yield from' 在功能之外
'yield from' outside of function
所以我有一个 discord 机器人的代码,它将保持 track/add/remove 点。我是 python 的新手,到目前为止我已经修复了所有错误,要么是靠运气,要么是在 google 的帮助下,但我似乎无法弄清楚如何修复这一点。每当我尝试 运行 代码时,我都会得到
"yield from" outside of function.
我该如何解决这个问题?
@asyncio.coroutine
def func(self): passon_message (self, message)
if message.content.startswith('p!'):
if message.content[2] in self.houses:
split_message = message.content.split()
if split_message[0] == f'p!{message.content[2]}':
if split_message[1] == 'add' or split_message[1] == 'remove':
if split_message[2].isdigit():
if split_message[1] == 'add':
old_points = self.bot.hp.data.get('housepoints').get(self.houses.get(message.content[2])).get('points')
self.bot.hp.data['housepoints'][self.houses.get(message.content[2])]['points'] = old_points + int(split_message[2])
self.bot.hp.save()
yield from message.channel.send('added')
if split_message[1] == 'remove':
old_points = self.bot.hp.data.get('housepoints').get(self.houses.get(message.content[2])).get('points')
self.bot.hp.data['housepoints'][self.houses.get(message.content[2])]['points'] = old_points - int(split_message[2])
self.bot.hp.save()
yield from message.channel.send('removed')
EDIT:
这是代码的图像。不能让它在这里看起来更好
代码:
(您的屏幕截图证实了 理论,因此将其作为答案发布以供您接受。)
Python 通过缩进识别函数(或 if
语句,for
循环,...)中包含哪些代码。如果你在同一行放置一个语句,像这样:
def foo(): print("Hello.")
它假定该函数仅包含该语句。所以在你的代码中只有语句 passon_message (self, message)
在 func
中。要包含所有这些行,您需要将该语句放在新的缩进行中,并缩进以下 if
语句:
@asyncio.coroutine
def func(self):
passon_message (self, message)
if message.content.startswith('p!'):
if message.content[2] in self.houses:
split_message = message.content.split()
# ...
所以我有一个 discord 机器人的代码,它将保持 track/add/remove 点。我是 python 的新手,到目前为止我已经修复了所有错误,要么是靠运气,要么是在 google 的帮助下,但我似乎无法弄清楚如何修复这一点。每当我尝试 运行 代码时,我都会得到
"yield from" outside of function.
我该如何解决这个问题?
@asyncio.coroutine
def func(self): passon_message (self, message)
if message.content.startswith('p!'):
if message.content[2] in self.houses:
split_message = message.content.split()
if split_message[0] == f'p!{message.content[2]}':
if split_message[1] == 'add' or split_message[1] == 'remove':
if split_message[2].isdigit():
if split_message[1] == 'add':
old_points = self.bot.hp.data.get('housepoints').get(self.houses.get(message.content[2])).get('points')
self.bot.hp.data['housepoints'][self.houses.get(message.content[2])]['points'] = old_points + int(split_message[2])
self.bot.hp.save()
yield from message.channel.send('added')
if split_message[1] == 'remove':
old_points = self.bot.hp.data.get('housepoints').get(self.houses.get(message.content[2])).get('points')
self.bot.hp.data['housepoints'][self.houses.get(message.content[2])]['points'] = old_points - int(split_message[2])
self.bot.hp.save()
yield from message.channel.send('removed')
EDIT:
这是代码的图像。不能让它在这里看起来更好 代码:
(您的屏幕截图证实了
Python 通过缩进识别函数(或 if
语句,for
循环,...)中包含哪些代码。如果你在同一行放置一个语句,像这样:
def foo(): print("Hello.")
它假定该函数仅包含该语句。所以在你的代码中只有语句 passon_message (self, message)
在 func
中。要包含所有这些行,您需要将该语句放在新的缩进行中,并缩进以下 if
语句:
@asyncio.coroutine
def func(self):
passon_message (self, message)
if message.content.startswith('p!'):
if message.content[2] in self.houses:
split_message = message.content.split()
# ...