Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > как получить имена переменных модуля?


Автор: Гость_roger 5.7.2005, 13:44
Нужно получить список переменных модуля. Что-то похожее нашел в модуле inspect, но пока ума не приложу, как это применить (есть функция co_varnames, вроде бы так, которая выдает список переменных объекта, но объект должен быть типа "code"). Как бы это проще сделать?
И, может быть, можно все еще проще сделать - вообще задача сейчас состоит в том, чтобы узнать, сколько раз каждая переменная встречается в модуле (если 1 раз - либо опечатка, либо переменную создали и забыли).

Автор: 1DRE 5.7.2005, 14:47
что то не понял сколько раз переменную используют хотите узнать или сколько раз её объявляют?
i = ....
for i in bla:
....

Если взять этот код к примеру. Из него вы хотите найти сколько раз обьявляют, то огда нана парсить по имени и '=', а если сколько раз используют то тут ещё проще, просто ищем дубликаты. В http://aspn.activestate.com/ASPN/Python/Cookbook/ можно найти оба примера.
Или вы о dir() говорите.

Автор: setq 5.7.2005, 14:52
список переменных модуля можно получить через
Код
>>> import X
>>> dir (X)
['x', 'y' ... ]
... кажется.

Автор: Гость_roger 6.7.2005, 11:02
Цитата
что то не понял сколько раз переменную используют хотите узнать или сколько раз её объявляют?
i = ....
for i in bla:
....

Если взять этот код к примеру. Из него вы хотите найти сколько раз обьявляют, то огда нана парсить по имени и '=', а если сколько раз используют то тут ещё проще, просто ищем дубликаты. В http://aspn.activestate.com/ASPN/Python/Cookbook/ можно найти оба примера.
Или вы о dir() говорите.


Мне нужно подсчитать, сколько раз используется имя переменной в произвольном модуле. Т.е. при присвоении переменной значения - одно использование, изменение значения или применение переменной в выражении - еще одно использование. Смысл в том, чтобы вывести все переменные, которые упоминались лишь раз. Это либо переменные, написанные с опечаткой, либо переменные, которые создали и забыли использовать.

Цитата
>>> import X
>>> dir (X)
['x', 'y' ... ]


dir() - это первое, что я попробовал. Но он не выдал мне имена переменных.

Автор: 1DRE 6.7.2005, 17:26
ну тогда пиши прогу которая будет сверять по переменной и =
А потом выведет имена для которых небыло повтора. Короче это гемор. Даже лень заниматся.

Автор: Гость_roger 7.7.2005, 08:33
Цитата
ну тогда пиши прогу которая будет сверять по переменной и =


Да не хотелось бы использовать такой неэлегантный метод (например, если переменная используется, но ей не присвоили значение, эту ошибку можно будет обнаружить лишь когда интерпретатор дойдет до этого места), в самом пайтоне есть мощные средства интроспекции, хотя это вариант - если не получится по-другому, так и сделаю.

Цитата
Короче это гемор. Даже лень заниматся.


Еще больший гемор отлавливать ошибки в программе, а однажды написанная эта прога поможет выявить часть ошибок без длительного тестирования.

Автор: setq 15.7.2005, 11:31
кажется есть решение для твой проблемы. посмотри
Цитата
http://pychecker.sourceforge.net/
судя по описанию умеет отлавливать в частности
Цитата
Unused globals and locals (module or variable)
сам не пользовался

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)