1
我試圖檢測調用鏈之間的函數。使用正則表達式查找函數調用
例如,我可以用
re.search("([\w_]+)\((|[\W\d\w\,]+)\)", line)
找到
print(len("AA"))
,但它是相當不兼容類似的代碼:
print(i + len("AA") + j + len("BBB"))
幫助我。
import ast
a = ast.parse('print(i + len("AA") + j + len("BBB"))')
print ast.dump(a)
>>>
Module(body=[Print(dest=None, values=[BinOp(left=BinOp(left=BinOp(left=Name(id='i',
ctx=Load()), op=Add(), right=Call(func=Name(id='len', ctx=Load()), args=[Str(s='AA')],
keywords=[], starargs=None, kwargs=None)), op=Add(), right=Name(id='j', ctx=Load())),
op=Add(), right=Call(func=Name(id='len', ctx=Load()), args=[Str(s='BBB')], keywords=[],
starargs=None, kwargs=None))], nl=True)])
你想解析Python代碼嗎? – 2013-10-07 08:13:58
首先,使用正則表達式分析嵌套函數調用並不是一個好主意,因爲語言不是常規的。第二,你可以使用ast模塊來分析python代碼 – gefei
也許一個profiler會幫助你在這裏看到一個調用者圖形,例如''pydoc -k profile''。順便說一句:「幫幫我。」聽起來有點粗魯,「請幫助我。」會更有禮貌,但在SX這裏都不需要。 – math