2016-01-28 2 views
0

Я работаю в базе кода питон-2 с большим количеством заявлений видаАвтоматическая очистка импорта * отчетности в питона

from Util import * 

Это не является хорошей практикой, так что я хотел бы заменить они все с

import Util 

, а затем добавить Util. префикс все для переменных/функций, где это необходимо.

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

+0

Если вы хотите, вы можете сделать 'импорт Util, как u' а затем вам просто нужно добавить 'u.' – intboolstring

+2

Сделайте это вручную. Это должно научить вас никогда больше не «импортировать» :-). –

+0

@Jim Более 100 тыс. Строк кода, десятки различных модулей, из которых выполняется 'import *' ... кажется, возможно написать автоматизированный инструмент для этого в теории, нет? – dshin

ответ

0

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

Похоже, вы уже знаете, как справиться с увеличением строки. Вы получаете каталог символов для модуля, как это:

import random 
for random_name in dir(random): 
    ... 

Чтобы дать вам идею, вот список значений random_name:

BPF 
LOG4 
NV_MAGICCONST 
RECIP_BPF 
Random 
SG_MAGICCONST 
SystemRandom 
TWOPI 
WichmannHill 
_BuiltinMethodType 
_MethodType 
__all__ 
__builtins__ 
__doc__ 
__file__ 
__name__ 
__package__ 
_acos 
_ceil 
_cos 
_e 
_exp 
_hashlib 
_hexlify 
_inst 
_log 
_pi 
_random 
_sin 
_sqrt 
_test 
_test_generator 
_urandom 
_warn 
betavariate 
choice 
division 
expovariate 
gammavariate 
gauss 
getrandbits 
getstate 
jumpahead 
lognormvariate 
normalvariate 
paretovariate 
randint 
random 
randrange 
sample 
seed 
setstate 
shuffle 
triangular 
uniform 
vonmisesvariate 
weibullvariate 
+0

Фактически, есть столкновений имен, которые являются частью мотивации для очистки. Например, некоторые локальные переменные имеют имена, которые сталкиваются с переменными из модулей. – dshin

+0

В этом случае вам понадобится дополнительная логика для распознавания символов в каждой новой области. Решение для этого выходит за рамки этого сайта. Вы попадаете на первые уровни синтаксического анализа ... хотя, возможно, вы можете предварительно обработать, если каждая область присваивает свой каталог символов в формате, который может использовать ваша программа редактирования. – Prune

+0

Yikes, мне никогда не говорили, что любой мой вопрос выходит за рамки этого сайта. Джим намекнул, что некоторые IDE могли бы сделать это для меня, что было бы лучше. – dshin

Смежные вопросы