Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Цепочка методов Основы Python

Конвеер методов, strip обрезает пробелы, upper - переводит символы в верхний регистр

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

У нас есть следующий код:

name = 'Tirion'
print(name.upper().lower())  # => `tirion`

Он напечатал на экране tirion.

Синтаксис нескольких подряд идущих точек мы видим впервые, но все операции, которые здесь встречаются, нам знакомы. В этом коде объединились известные возможности языка.

Такое в программировании происходит часто. Если вы не знаете синтаксис, то можно все равно пробовать комбинировать различные подходы, и есть вероятность, что они заработают.

Чтобы понять, как работает этот код, нужно разбить цепочку на отдельные операции:

name = 'Tirion'
upper_name = name.upper()  # 'TIRION'
print(upper_name.lower())  # 'tirion'

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

Еще один пример для закрепления:

name = 'Tirion'
print(name.replace('Ti', 'Ki').lower())  # => ?

Над этим кодом нужно хорошо подумать. .lower() применяется к результату вызова метода, который находится левее. А метод replace() возвращает строку. Новички часто делают ошибки в цепочках с методами и забывают ставить вызов:

name = 'Tirion'
# Этот код отработает неверно!
print(name.upper.lower())

Также возможно строить бесконечно длинные и бесполезные цепочки, которые включают в себя слайсы:

# Чему равен результат такого вызова?
print(name[1:5].upper().find('I'))

С функциями это не сработает, так как обычно они вкладываются друг в друга — f(f(f())). Это значительно ухудшает анализ. Но это не значит, что нельзя сделать красиво. В других языках это реализуется через композицию функций или пайплайн-оператор.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
2 февраля 10 месяцев
Иконка программы Аналитик данных
Профессия
В разработке с нуля
Сбор, анализ и интерпретация данных
16 марта 8 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»