python - 'yield from' 函数之外
问题描述
所以我有一个用于跟踪/添加/删除点的不和谐机器人的代码。我对python很陌生,到目前为止,我已经通过运气或谷歌的帮助修复了所有错误,但我似乎不知道如何解决这个问题。每当我尝试运行代码时,我都会得到
功能之外的“收益”。
我将如何解决这个问题?
@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')
编辑:
这是代码的图像。不能让它看起来更好这里代码:
解决方案
(您的屏幕截图证实了我的评论理论,因此将其发布为您接受的答案。)
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()
# ...
推荐阅读
- python - 为什么这个 Groupby 转换不起作用?
- html - Angular textarea 输入未显示值/内容,尽管显示在 html 中
- oracle - 需要从存储过程中接受逗号分隔的输入,并且必须按照我在下面的正文中解释的那样进行处理,但会出现编译错误
- pine-script - 更改脚本以响应悬停状态
- pandas - 暂停正在运行的 Jupyter Notebook
- jquery - jquery:遍历json数组
- conda - 如何导出和导入 conda 和 pip 环境
- javascript - 将 JSON 响应数据发送到自定义小部件 - Ruby Rails 5.2
- python - 没有 --extra-index-url https://test.pypi.org/simple/ pip install 不起作用
- spring - 与使用 jdbc 的服务不同,Kotlin 不适用于存储库