关键字不能是表达式?

2024-06-07 19:06:18 发布

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

在我的代码中,我试图做到:

if "!variants" in args[0]:
        variants = client.user.party.me.create_variants(
           args[2]=args[3]
        )

        await client.user.party.me.set_outfit(
            asset=args[1],
            variants=variants
        )

        await message.reply('Skin set to' + args[1])

对于args[2],它可以是很多事情,比如clothing_colormaterial,我能找到的唯一解决方案是为每个不同的args[2]添加不同的命令,这不是很有效,我宁愿将代码缩短为1个命令,是:

if ("!variants" in args[0]) & ("clothing_color" in args[2]):
        variants = client.user.party.me.create_variants(
            clothing_color=args[3]
        )

        await client.user.party.me.set_outfit(
            asset=args[1],
            variants=variants
        )

        await message.reply('Skin set to' + args[1])

if ("!variants" in args[0]) & ("material" in args[2]):
        variants = client.user.party.me.create_variants(
            material=args[3]
        )

        await client.user.party.me.set_outfit(
            asset=args[1],
            variants=variants
        )

        await message.reply('Skin set to' + args[1])

或者第二种方法是我唯一能解决这个问题的方法?你知道吗


Tags: inclientmessageifpartycreateargsasset
2条回答

您可以使用re

if "!variants" in args[0] and re.search("clothing_color|material", args[2]):

如果找到任何一个单词,则返回一个Match对象;如果没有,则返回None对象

如果要动态传递关键字参数,需要将关键字和值转换为字典,然后使用**运算符传递。你知道吗

variants = client.user.party.me.create_variants(**{args[2]: args[3]})

相关问题 更多 >

    热门问题