亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個函數如何知道變量存在?

這個函數如何知道變量存在?

PHP
呼啦一陣風 2023-11-09 21:19:37
我有一些代碼:from scapy.all import *def sniffFunc(pkt):    print(pkt.show())    quit()myFilter = 'tcp and src host 192.168.1.2 and dst host 52.223.224.41'sniff(filter=myFilter, prn=sniffFunc)它從我的主機嗅探單個數據包到 twitch 服務器并顯示該數據包的信息。sniffFunc() 如何知道變量“pkt”是什么以及該變量的值?我知道名稱可以是程序員想要的關于傳遞給函數的變量的任何名稱,但是,一旦進入函數內部,在我看來變量“pkt”將為空,但它包含所需的值。例如,我認為人們必須做類似的事情:pkt = sniff(filter=myFilter, prn=sniffFunc(pkt))雖然這行不通,但也許它會讓我對我的思維過程有一些了解。
查看完整描述

1 回答

?
繁星coding

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是你的函數返回的任何內容。你可以看到它只是打印返回值(如果有的話)。


查看完整回答
反對 回復 2023-11-09
  • 1 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號