Оценка атрибутов класса и генераторы

Для ответа на вопрос специально для MSSQL полнотекстовое индексирование будет НЕ справка в сценарии.

для улучшения того запроса, Вы могли выполнить одно из следующих действий:

  1. , Настраивают полнотекстовый каталог по столбцу и используют СОДЕРЖАНИЕ () функция.
  2. , Если Вы, прежде всего, искали с префиксом (т.е. соответствовали от запуска имени), Вы могли изменить предикат на следующее и создать индекс по столбцу.

    , где fname как '% префикса'

(1) является, вероятно, излишеством для этого, если производительность запроса не является большой проблемой.

15
задан AFoglia 20 November 2009 в 22:29
поделиться

2 ответа

Ага, это немного хитроумно. Класс на самом деле не вводит новую область видимости, он просто как бы немного похож на него; конструкции, подобные этой, выявляют разницу.

Идея состоит в том, что когда вы используете выражение генератора, это эквивалентно выполнению этого с помощью лямбда:

class Brie(object):
    base= 2
    powers= map(lambda i: base**i, xrange(5))

или явно как оператора функции:

class Brie(object):
    base= 2

    def __generatePowers():
        for i in xrange(5):
            yield base**i

    powers= list(__generatePowers())

В этом случае ясно, что base не входит в область действия __ generatePowers ; исключение возникает для обоих (если только вам не повезло, и у вас также есть base global, и в этом случае вы получите ошибку).

Этого не происходит для понимания списков из-за некоторых внутренних деталей на как они оцениваются, однако это поведение исчезает в Python 3, который в обоих случаях не работает одинаково. Некоторое обсуждение здесь.

Обходной путь можно найти с помощью лямбда-выражения с той же техникой, на которую мы полагались в старые добрые времена до nested_scopes:

class Brie(object):
    base= 2
    powers= map(lambda i, base= base: base**i, xrange(5))
14
ответ дан 1 December 2019 в 04:27
поделиться

Из PEP 289 :

После изучения многих возможностей, возник консенсус, что обязательные вопросы было трудно понять, и что пользователи следует настоятельно рекомендовать использовать выражения генератора внутри функций которые потребляют их аргументы немедленно. Для более сложных приложения, полный генератор определения всегда лучше в условия очевидности в отношении объема, время жизни и привязка [6].

[6] (1, 2) Обсуждение исправлений и альтернативные исправления на Source Forge http://www.python.org/sf/872326

Это то, как выражения генератора имеют вид насколько я могу разобрать.

1
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: