Автоматическое обнаружение блоков с отступом для кода Python

Это было бы довольно просто в Java, так как существуют фигурные скобки, необходимые для начала и окончания этого блока кода, и поэтому я мог бы написать программу для поиска фигурных скобок и маркировки каждой функции.

Проблема, с которой я столкнулся в Python - это найти какой-то маркер, который сообщает мне, когда функция заканчивается. Я предполагаю, что одним из решений было бы выяснить какую-то схему для обнаружения '\t' для каждой строки. Каковы некоторые методы определения начала функционального блока и его конца?

1 ответ

Заготовки обычно предпочтительнее вкладок, и смешивание определенно не приемлемо. независимо от того, функции также могут быть определены внутри других функций и в классах, так что ваш q может быть немного более тонким.

(Кстати, в то время как в REPL пустая строка заканчивает определение, это не совсем так.)

Вы могли бы использовать модуль проверки

In [1]: import inspect

In [2]: def h():
    ...:     a =9
    ...:     b =8
    ...:     return a+b
    ...: 

In [3]: inspect.getsourcelines(h)
Out[3]: ([u'def h():\n', u'    a =9 \n', u'    b =8\n', u'    return a+b\n'], 1)

In [4]: inspect.getsourcelines(h)[0]
Out[4]: [u'def h():\n', u'    a =9\n', u'    b =8\n', u'    return a+b\n']

In [4]: len(inspect.getsourcelines(h)[0])
Out[4]: 4
Другие вопросы по тегам