Python函數具有一個代碼對象__code__
Python函數。獲得一個代碼對象
A sys.settrace
跟蹤frame
有一個f_code
代碼對象。
對於那些調用是功能示蹤劑,我怎麼能得到函數對象(及其__annotation__
成員)?
到目前爲止,通過試驗和錯誤,我有:
if hasattr(frame.f_globals.get(frame.f_code.co_name),"__annotations__"):
這似乎爲職能的工作,但不能用於類的成員函數;更糟糕的是,它將類成員函數與同名的頂級函數混淆了。
(我關於Python 3.2.3(Xubuntu上)我看到了Python 3.3 inspect
模塊具有signature
功能;將在返回註釋的代碼對象或者它太需要一個函數對象?)
了'inspect.getframeinfo'元組的'function'字段替換
__code__
似乎是一個字符串,而不是一個函數對象。 gc方法冒着多重推薦人的風險? – Will我已經結束了使用gc.get_referrers(...)[0] – Will
您可以添加一個檢查,看是否func_code/__ code__是你想要的清單comprehension.This代碼對象仍然失敗,如果你生成具有多種功能與相同的代碼對象有不同的關閉,例如與裝飾者。我想,人們可以對func_closure每個... –