Как провести различие между «строкой» и «реальным кодом» в python?
Мои работы относятся к инструментированию фрагментов кода в коде Python. Поэтому в своей работе я писал бы скрипт на python, чтобы в качестве входных данных я использовал другой файл python и вставил любой необходимый код в нужное место с моим скриптом.
Следующий код является примером кода файла, который я бы использовал:
A.py #normal un-instrumented code
statements
....
....
def move(self,a):
statements
......
print "My function is defined"
......
statements
......
Мой сценарий на самом деле проверяет каждую строку в A.py, и если есть «def», то фрагмент кода инструментируется поверх кода функцией def.
В следующем примере показано, каким должен быть окончательный результат:
A.py #instrumented code
statements
....
....
@decorator #<------ inserted code
def move(self,a):
statements
......
print "My function is defined"
......
statements
......
Но я привел с другим выводом. Следующий код является окончательным выводом, который я получаю:
A.py #инструментированный код
statements
....
....
@decorator #<------ inserted code
def move(self,a):
statements
......
@decorator #<------ inserted code [this should not occur]
print "My function is defined"
......
statements
......
Я могу понять, что в инструментированном коде он распознает слово «def» в слове «определено», и поэтому он обрабатывает код над ним.
На самом деле инструментированный код имеет множество этих проблем, которые я не смог правильно обработать данным файлом python. Есть ли другой способ отличить фактическое «def» от строки?
Спасибо