关键字不能是表达式?

时间:2019-09-23 19:40:53

标签: 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])

还是第二种方法,这是我可以解决的唯一方法?

2 个答案:

答案 0 :(得分:0)

您可以使用re

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

如果找到任何一个单词,它将返回一个Match对象,否则将返回None

答案 1 :(得分:0)

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

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