2010-03-04 27 views
3

阅读文档似乎这可能是不可能的,但似乎很多人已经能够将更复杂的功能打败成pythons lambda函数。Python Lambda或

我利用scapy库来做一些数据包创建。特别是这个问题是关于ConditionalField,它将它作为一个字段和一个比较函数,如果比较结果为真,该字段只会被添加到数据包中,但我需要做2次比较。

例子只有一个检查,这个工程:

ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1) 

我想要什么:

ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1 or (lamba pkt:pkt.special == 1)) 

这是不是给预期的结果。有没有办法做到这一点?

回答

8
lambda pkt:((pkt.chksumpresent == 1) or (pkt.special == 1)) 
6

lambda是最易读/可维护的吗?以下只是性能:

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

ConditionalField(XShortField("chksum",None), checksum_condition)