Автоматическое обнаружение блоков с отступом для кода 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