В глубь языка Python


Использование lambda-функций - часть 2


Во-вторых, мы используем метод split без аргументов. Вы уже видели его использование , без аргументов метод split разбивает строку по символам пропуска (пробел, табуляция, возврат коретки, переход на новую строку).

Пример 2.23. split без аргументов

>>> s = "this is\na\ttest"

1

>>> print s this is a test >>> print s.split()

2

['this', 'is', 'a', 'test'] >>> print " ".join(s.split())

3

'this is a test'

Это строка, которая содержит символ переход на новую строку, записанный в виде специальной последовательности (такие строки могут быть также записаны с использованием ). \n — переход на новую строку, \t — символ горизонтальной табуляции.
Метод split без аргументов разбивает строку по символам пропуска. В данном случае три пробела, переход на новую строку и табуляция воспринимаются одинаково.
Вы можете нормализовать пропуски разбив строку, а затем снова объединив ее, используя один пробул в качестве разделителя. Именно это делает функция help для того, чтобы свернуть строку документации.

Так что же на самом деле делает функция help с этими lambda-функциями, методами split и приемом с and-or?

Пример 2.24. Присваивание функции переменной

processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)

processFunc теперь ссылается на функцию, но на какую — это зависит от значения переменной collapse. Если collapse является истиной, processFunc(string)

будет сворачивать символы пропуска, в противном случае processFunc(string)

будет возвращать аргумент без изменений.

Для того, чтобы сделать это на менее мощном языке, например на Visual Basic, вы, скорее всего, будете использовать интсрукцию if, чтобы решить, сворачивать символы пропуска или нет. Такой подход неэффективен, так как проверять условие придется при каждом вызове функции. В языке Python вы можете принять решение один раз и определить lambda-функцию, которая будет делать только то, что вам нужно.

Дополнительная литература

  • описывает использование lambda

    для .

  • показывает, как ( поясняет, что в будущих версиях Python это будет сделать проще).
  • В приводятся примеры .




Начало  Назад  Вперед



Книжный магазин