Я считаю, что у меня есть то, что можно было бы назвать проблемой с областью, возможно, с именем пространства. Не слишком уверен, что я новичок в python.Проблема с модулем для интерактивного режима python
Я пытаюсь создать модуль, который будет выполнять поиск по списку с использованием регулярных выражений. Я уверен, что есть лучший способ сделать это, но эта ошибка, которую я получаю, подтачивает меня, и я хочу понять, почему.
вот мой код:
class relist(list):
def __init__(self, l):
list.__init__(self, l)
def __getitem__(self, rexp):
r = re.compile(rexp)
res = filter(r.match, self)
return res
if __name__ == '__main__':
import re
listl = [x+y for x in 'test string' for y in 'another string for testing']
print(listl)
test = relist(listl)
print('----------------------------------')
print(test['[s.]'])
Когда я запускаю этот код из командной строки она работает так, как я ожидаю, что это; Однако, когда я запускаю его через питон интерактивного режим, я получаю ошибку
>>> test['[s.]']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "relist.py", line 8, in __getitem__
r = re.compile(rexp)
NameError: global name 're' is not defined
В то время как в интерактивном режиме я импорт повторно, и я могу использовать функции повторно, но по какой-то причине, когда я пытаюсь выполнить модуль не работает.
Нужно ли мне импортировать повторно в область действия класса? Я бы не подумал, потому что не ищет python через другие области, если он не найден в текущем?
Я ценю вашу помощь, и если есть лучший способ сделать этот поиск, мне было бы интересно узнать. Благодаря