Добавил:
study@slavapmk.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Все Лекции

.pdf
Скачиваний:
0
Добавлен:
12.05.2026
Размер:
15.98 Mб
Скачать

Функциональное программирование. Функции-литералы

Функции-литералы считаются обычными значениями соответствующего типа, и с ними можно работать также, как с другими константами.

Пример: для всех библиотечных структур данных Scala («коллекций») List, Set, Array, Map определен метод foreach. Он принимает функцию в качестве аргумента и вызывает ее последовательно для каждого элемента коллекции.

28

Функциональное программирование. Замыкания

Замыкание — это комбинация функции и лексического окружения, в котором эта функция была объявлена.

Это окружение состоит из произвольного количества локальных переменных, которые были

в области действия функции во время создания замыкания.

29

Область видимости переменных

Переменная – объект программы, занимающий в общем случае несколько ячеек памяти, призванный хранить данные.

Переменная обладает именем, размером и рядом других атрибутов (таких как видимость, время существования и т.п.).

Переменные могут быть объявлены как внутри тела какойнибудь функции, так и за пределам любой из них.

30

Область видимости переменных

Переменные, объявленные внутри тела функции, называются локальными.

Такие переменные размещаются в стеке программы и действуют только внутри той функции, в которой объявлены.

Как только управление возвращается вызываемой функции, память, отводимая под локальные переменные, освобождается.

31

Область видимости переменных

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

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

С этим понятием тесно связано понятие области видимости переменной. Если переменная выходит из области действия, она становится невидимой.

Временем жизни переменной называется интервал выполнения программы, в течение которого она существует.

32

Область видимости переменных

Глобальные переменные объявляются вне тела какой-либо из функций и действуют на протяжении выполнения всей программы.

Такие переменные доступны в любой из функций программы, которая описана после объявления глобальной переменной.

Область действия глобальной переменной совпадает с областью видимости и простирается от точки её описания до конца файла, в котором она объявлена.

Время жизни глобальной переменной – постоянное, то есть совпадает с временем выполнения программы.

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

33

Функциональное программирование. Замыкания

34

Функциональное программирование. Замыкания

Замыкание — это функция, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся ее параметрами.

>>>def add(a, b): return a + b

>>>add(3, 4)

7

>>>def add2(a): return a + 2

>>>add(5)

7

>>>add(2, 5)

7

>>>add(7, 2)

9

>>>def add(a):

def helper(b): return a + b

return helper

>>> add(5)(2) 7

35

Функциональное программирование. Замыкания

>>>new_add2 = add(2)

>>>new_add2 <function add.<locals>.helper at 0x000001A7548C1158>

>>>new_add2(5)

7

>>> new_add2(7) 9

Вызывая new_add2(5), мы фактически обращаемся к функции helper(), которая находится внутри add().

36

Рекомендуемая литература

Непейвода, Н. Н. Стили и методы программирования : учебное пособие / Н. Н. Непейвода. — 3-е изд. — Москва : ИнтернетУниверситет Информационных Технологий (ИНТУИТ), Ай Пи Ар Медиа, 2021. — 295 c. — ISBN 978-5-4497-0938-7. — Текст :

электронный // Цифровой образовательный ресурс IPR SMART : [сайт]. — URL: https://www.iprbookshop.ru/102065.html

Любой учебник или справочник по программированию на языке Python (например, Никитина, Т. П. Программирование. Основы Python для инженеров / Т. П. Никитина, Л. В. Королев. — Санкт-

Петербург : Лань, 2023. — 156 с. — ISBN 978-5-507-45284-2. —

Текст : электронный // Лань : электронно-библиотечная система.

— URL: https://e.lanbook.com/book/302720

Интернет-ресурсы, например: https://www.python.org

37