2010-03-04 3 views
3

설명서를 읽는 것이 가능하지 않을 수도 있지만, 많은 사람들이 비톤스 람다 함수에 더 복잡한 기능을 이길 수 있었다고합니다.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

람다는 가장 읽기 쉽고 유지 보수가 용이합니까? 다음은 공연자와 마찬가지입니다.

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

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