[問題] 如何知道一個 function 牽扯到多少 modul

看板Python作者 (氣氛的燃料)時間3年前 (2021/09/07 08:34), 3年前編輯推噓5(5013)
留言18則, 7人參與, 3年前最新討論串1/1
大家早 最近在拆工作上的一個 package ,當初前人做這個 package 的時候為了能應用在多種情況所以主 module 裡面有很多 function ,也因此也寫了很多輔助的 module 互相 import 不過這麼做的結果就是讓整個程式太肥,現在要做的東西只需要主 module 裡面的其中一個 function ,因此想特別拉出來做成一個新的輕量化程式 在循線找關聯 module / function 這邊花了滿多時間,即使不直接影響主 module 的 module 或 function 也可能會有間接關係,這讓我好奇有沒有某種插件 (我是用 vscode) 可以在執行 package 的某個 function 時自動追蹤牽扯到的 module 和 function ,並且把沒用到的部分註解掉 (這部分可有可無) 以上,如果還有說明不齊的地方再麻煩和我說了,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.147.126 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1630974896.A.896.html

09/07 09:56, 3年前 , 1F
就是列出目前的 call stack 吧?
09/07 09:56, 1F
嗯沒錯,類似執行 test.py def foo(): print("foo") ================== test2.py from test import foo def fum(): print("fum") def bar(): print("bar") fum() foo() def go(): bar() go() 的時候,插件最終會回傳 (test2.py) go→ (test2.py) bar → (test2.py)fum → (test. ※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/07/2021 10:17:59

09/07 10:20, 3年前 , 2F
噢結果貼上來縮排都跑掉了,除了最後的 go() 之外,de
09/07 10:20, 2F

09/07 10:20, 3年前 , 3F
f 以下到下一個 def 之前都是縮排
09/07 10:20, 3F
※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/07/2021 10:46:09

09/07 12:36, 3年前 , 4F
profile, print_caller?
09/07 12:36, 4F

09/07 13:21, 3年前 , 5F
traceback.print_stack()?
09/07 13:21, 5F

09/07 17:34, 3年前 , 6F

09/07 17:34, 3年前 , 7F

09/07 17:35, 3年前 , 8F
感謝各位的回應,試了 print caller (上圖) 和 trackb
09/07 17:35, 8F

09/07 17:35, 3年前 , 9F
ack.print_stack() (下圖) 兩種用法,以結果來說 trac
09/07 17:35, 9F

09/07 17:35, 3年前 , 10F
kback 比較接近,但這樣必須把 trackback 埋在最源頭
09/07 17:35, 10F

09/07 17:35, 3年前 , 11F
的 function 而不是最末端的執行 function (而我是想
09/07 17:35, 11F

09/07 17:35, 3年前 , 12F
透過最末端的執行 function 溯源找到所有有牽扯到的 f
09/07 17:35, 12F

09/07 17:35, 3年前 , 13F
unction),以使用上來說有點本末倒置
09/07 17:35, 13F

09/07 20:33, 3年前 , 14F
vsc點function右鍵查看參考?
09/07 20:33, 14F
的確是個方法,但現在這個 package 太錯綜複雜,開參考人工一個一個 function 往上追有點耗時,所以才想說有沒有自動的方法 ※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/07/2021 21:43:10

09/07 22:02, 3年前 , 15F
你有試過 call graph 嗎? 可以找找看 pycallgraph2 看
09/07 22:02, 15F

09/07 22:02, 3年前 , 16F
怎麼使用。
09/07 22:02, 16F

09/07 22:08, 3年前 , 17F

09/07 22:15, 3年前 , 18F
python -m trace -t test2.py 之類?沒仔細研究
09/07 22:15, 18F
http://i.imgur.com/DdQWs00.jpg
沒錯!這是我要的,雖然實際拿去追 package 有點小 error 但應該只是程式本身的小問題。感謝你 ※ 編輯: moodoa3583 (223.140.147.126 臺灣), 09/08/2021 13:16:02
文章代碼(AID): #1XDhEmYM (Python)
文章代碼(AID): #1XDhEmYM (Python)