Python三元表达式:“未赋值”

2024-09-30 18:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

@bot.command()
async def online(ctx):
    """Fetch all members and add to list based on status"""
    onlinemembers, offlinemembers = [], []
    # Loop over individual member in guild.members list
    for m in ctx.guild.members:
        # Add to list of online members if status is online or dnd, else add to offline list
        onlinemembers.append(str(m)) if str(m.status) in ['online', 'dnd'] else offlinemembers.append(str(m))
    await ctx.send(f"Online members: {', '.join(onlinemembers)}\nOffline members: {', '.join(offlinemembers)}")

它的工作原理与预期一样。 在使用三元表达式之前,我做了如下操作:

        ...
        if str(member.status) in ['online', 'dnd']:
            onlinemembers.append(str(member))
        else:
            offlinemembers.append(str(member))
        ...

这也很好,但我想写得更短

最上面的代码在linter中给了我这个错误: Expression "onlinemembers.append(str(m)) if str(m.status) in ['online', 'dnd'] else offlinemembers.append(str(m))" is assigned to nothing

我怎么能做这样的事情而不出现这样的错误呢


Tags: toinifstatuselselistonlinemember