Python使用Or的Lambda
根据文档来看,这个可能做不到,但似乎很多人都能把更复杂的功能实现到Python的lambda函数里。
我正在使用scapy库来创建一些数据包。特别是这个问题是关于ConditionalField的,它需要一个字段和一个比较函数,只有当比较为真时,这个字段才会被添加到数据包中,但我需要进行两个比较。
下面是一个只有一个检查的例子,这个是可以工作的:
ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)
我想要的效果是:
ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1 or (lamba pkt:pkt.special == 1))
这个结果并没有达到预期。有没有办法做到这一点呢?
2 个回答
6
lambda表达式是最容易读懂和维护的吗?其实,下面这个写法的性能也一样好:
def checksum_condition(pkt):
return pkt.chksumpresent == 1 or pkt.special == 1
ConditionalField(XShortField("chksum",None), checksum_condition)
8
lambda pkt:((pkt.chksumpresent == 1) or (pkt.special == 1))
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。