Python使用Or的Lambda

3 投票
2 回答
1772 浏览
提问于 2025-04-15 20:01

根据文档来看,这个可能做不到,但似乎很多人都能把更复杂的功能实现到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))

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答