阅读文档似乎这可能是不可能的,但似乎很多人已经能够将更复杂的功能击败到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)
这没有给出预期的结果.有没有办法做到这一点?
lambda pkt:((pkt.chksumpresent == 1) or (pkt.special == 1))
Run Code Online (Sandbox Code Playgroud)
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)