1 回答

TA貢獻1797條經驗 獲得超4個贊
函數本身可以保存到變量中,然后調用:
f = sniffFunc f(a_packet) # Still works
被調用的函數對象sniffFunc
會像任何其他對象一樣傳遞給該函數。一旦進入sniff
(實際上在代碼的深處),它會獲取您提供的函數對象,并通過向其傳遞給定的數據包來調用它:
def on_packet_received(self, pkt):
"""DEV: entry point. Will be called by sniff() for each
received packet (that passes the filters).
"""
if not pkt:
return
if isinstance(pkt, list):
for p in pkt:
DefaultSession.on_packet_received(self, p)
return
self.__count += 1
if self.store:
self.lst.append(pkt)
if self.prn:
result = self.prn(pkt) # Your function was stored in the variable self.prn <<<<<
if result is not None:
print(result)
result是你的函數返回的任何內容。你可以看到它只是打印返回值(如果有的話)。
- 1 回答
- 0 關注
- 158 瀏覽
添加回答
舉報