所以说 xxx 是 python/js 的生产力。
1. 在 Python 中,如果你想简化表达式
message.guild.id if message.guild else None ,可以使用内置的 getattr() 函数,这种方式可以更加简洁且直观。
使用 getattr() 函数,你可以直接指定想要获取的属性,如果该属性不存在,则返回你指定的默认值。这里是如何用 getattr() 来重写你的表达式:
getattr(message.guild, 'id', None)
这行代码尝试从 message.guild 获取 id 属性,如果 message.guild 是 None 或者 message.guild 没有 id 属性,它会返回 None 。这种方式可以使代码更加简洁且易于理解。
2.可以在定义字典时使用条件表达式( ternary operator ),这样就可以在初始化时直接决定是否包含某个键。这里是一个针对你需求的示例代码:
new_message = {
'messageId':
message.id,
'content': message.content,
'guildId':
message.guild.id if message.guild else None,
**({'authorId':
message.author.id} if message.author else {})
}
在这个示例中,我使用了字典解包(**)来根据条件动态地添加 authorId 键。如果 message.author 是 None ,那么这部分字典将不会被添加到 new_message 中。这样一来,new_message 就只会在 message.author 不为 None 时包含 authorId 。这种方法避免了创建后修改字典的需求,使得代码更加简洁和高效。