На этом шаге мы наметим план дальнейшего изложения.
Функции Python относятся к объектам первого класса. Их можно присваивать переменным, хранить их в структурах данных, передавать их в качестве аргументов другим функциям и даже возвращать их в качестве значений из других функций.
Глубокое осмысление этих понятий на интуитивном уровне намного упростит понимание расширенных функциональных средств языка Python, в частности лямбда-функций и декораторов. Это также направит вас по верному пути к методам функционального программирования.
В следующих нескольких шагах мы проведем вас через несколько примеров, чтобы помочь вам развить это интуитивное понимание. Примеры будут строиться друг поверх друга, поэтому, возможно, вам стоит читать их по порядку и даже попробовать некоторые из них в сеансе интерпретатора Python по мере продвижения.
Чтобы осмыслить понятия, которые мы будем здесь рассматривать, потребуется немного больше времени, чем вы ожидаете. Не волнуйтесь - это абсолютно нормально. Вполне возможно, что вы будете ощущать, как бьетесь головой о стену, а затем в один прекрасный момент, когда вы будете готовы, вас внезапно осенит, и все встанет на свои места.
На протяжении всего этого изложения мы будем в демонстрационных целях использовать приведенную ниже функцию yell(). Это простой игрушечный пример с легко распознаваемым результатом:
>>> def yell(text): return text.upper() + '!' >>> yell('привет') 'ПРИВЕТ!'
На следующем шаге мы поговорим о связи функций и объектов.