Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2009 02:57:14

FooBar
От:
Зарегистрирован: 2009-01-10
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос о re.compile

доброго вам времени суток, у меня есть вопрос: когда я компилирую шаблон внутри функции, то пайтон его при каждом вызове будет компилировать занова? и чтобы этого избежать нужно вынести его в глобальное простарнство имен?



Офлайн

#2 Янв. 23, 2009 03:23:29

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос о re.compile

правильно мыслишь =)



Офлайн

#3 Янв. 23, 2009 03:26:16

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

вопрос о re.compile

Да, но в 99.9% случаев, лучше сделать так, как удобней, ибо потери в скорости будут минимальны.
Если нужна скорость, то пишите на Си, так как питон, это, в первую очередь, удобный и понятный язык и писать на нём стоит максимально оптимизируя код не для скорости, а для удобочитаемости.



Офлайн

#4 Янв. 23, 2009 03:54:35

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос о re.compile

я всегда в глобальное выношу. или в атрибуты класса =)



Офлайн

#5 Янв. 23, 2009 04:07:05

FooBar
От:
Зарегистрирован: 2009-01-10
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос о re.compile

спасибо всем ответившим, вопрос решен



Офлайн

#6 Янв. 23, 2009 11:06:04

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

вопрос о re.compile

ZZZ
Если нужна скорость, то пишите на Си, так как питон, это, в первую очередь, удобный и понятный язык и писать на нём стоит максимально оптимизируя код не для скорости, а для удобочитаемости.
Движок регулярки в питоне практически полностью написана на сях, на питоне - только обертки функций в классы и кое-какие дополнительные проверки. Так что потори в скорости практически не будет в сравнении с сишной программой.
Если шаблон - статический, то можно запихнуть в keyword.
def function(line, regexp=re.compile('tralala')):
pass
Шаблон будет инициализирован один раз при инициализации функции. Хотя с точки зрения “Explicit is better than implicit” - так себе решение.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version