Python Lambda与Or

Pec*_*eck 3 python lambda

阅读文档似乎这可能是不可能的,但似乎很多人已经能够将更复杂的功能击败到pythons lambda函数中.

我正在利用scapy库来创建数据包.特别是这个问题是关于ConditionalField,它带有一个字段和一个比较函数,如果比较为真,该字段只被添加到数据包,但我需要进行2次比较.

只有一个检查的示例,这适用:

ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)
Run Code Online (Sandbox Code Playgroud)

我想要的是:

ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1 or (lamba pkt:pkt.special == 1))
Run Code Online (Sandbox Code Playgroud)

这没有给出预期的结果.有没有办法做到这一点?

Ign*_*ams 8

lambda pkt:((pkt.chksumpresent == 1) or (pkt.special == 1))
Run Code Online (Sandbox Code Playgroud)


Joe*_*erg 6

lambda是最易读/可维护的吗?以下是同样的表现:

def checksum_condition(pkt):
    return pkt.chksumpresent == 1 or pkt.special == 1

ConditionalField(XShortField("chksum",None), checksum_condition)
Run Code Online (Sandbox Code Playgroud)