Все Лекции
.pdf
Функциональное программирование. Функции-литералы
•Функции-литералы считаются обычными значениями соответствующего типа, и с ними можно работать также, как с другими константами.
•Пример: для всех библиотечных структур данных 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
