找到函數所有函數調用的最佳方法是什麼?我想在運行時做到這一點(可能與裝飾)。通過函數查找所有函數調用
是用inspect
(這意味着我將不得不訪問源代碼...所以沒有交互式解釋器支持)檢索源代碼的最佳方式,然後用ast
解析它?有沒有更好的辦法?
Python 2.7首選,但不是必需的。我希望它足夠簡單,可以做我自己。如果其他人已經做到了,我會查看源代碼,以便我能夠弄清楚。最終,我只會對某個特定裝飾器的函數調用感興趣,但是對於這個部分已經有了答案。
編輯:
def f():
return g(1)
@Interesting
def g(x):
return x + 1
print what_interesting_functions_does_this_call(f)
打印
(<function g at 0x7f2a1ec72a28>,)
我現在意識到,因爲這Python的動態是,這是不可能在一般情況下。但是,我能否涵蓋一些案例子集? 「你是一個白癡,你爲什麼會想到能夠告訴另一個函數調用了哪些函數,我想不出爲什麼這個函數會有用,因此它不能是有用的對你有用「是一個好的迴應。我想知道。
你可以用添加一個例子功能和預期的輸出?你想計算它調用每個函數的次數嗎? – shx2
定義函數調用?你是否包括內建的?或只是你的功能? –
只是我的功能。如果他們「有趣」,我會對他們進行註釋。 –