Рекурсивные функции Рекурсивные функции — это функции, которые возвращают сами себя, т.е. возвращают эту же функцию. Основная проблема — определить, когда именно необходимо закончить рекурсию, иначе функция будет исполняться бесконечное число раз.
Пример
Код:
d e f f a c t ( n ) :
i f n==0:
re tu rn 1
e ls e :
re tu rn n * fa c t(n -l)
p r i n t (fa c t (10))
Результат: 3628800
17)Чтение, запись, операции с файлами и каталогами. Перенаправление ввода/вывода. Сохранение объектов в файл. Значительная часть данных хранится в базах данных или файлах, из которых они потом извлекаются, добавляются в них или модифицируются. При этом удобнее хранить информацию именно в отдельных файлах и не харанить ее в программе. Сама программа является обработчиком и манипулятором данными. Такое представление характерно для большинства современных информационных систем.
Методы для работы с текстовыми файлами. Для работы с текстовыми файлами, как и для других типов файлов, используются такие методы, как запись данных, редактирование, удаление данных, чтение информации из файла.
Эти методы реализуются через функции работы с файлами.
Функции для работы с файлами. Первая из таких функций — это функция открытия файла open () . Создается переменная, которой передается файл с заданными правами доступа.
Синтаксис: open('имя ф а й л а р е ж и м ', [encoding])
Режим — это, собственно, то, что можно делать с данными из файла. Последний аргумент указывает на кодировку данных (например 'u t f - 8 'или 'ср1251').
Для чтения из файла используется функция read ( [п]) .
Необязательный аргумент п (целое) указывает, какое количество символов необходимо прочитать из файла. Если этот аргумент опущен, то в переменную заносится все содержимое файла.
Для записи используется функция write (переменная [список операторов]). Список операторов позволяет записать данные в заданном формате.
Следующая функция, которая является обязательной, — это close () . Она закрывает файл и освобождает переменную.
Перенаправление ввода/вывода. Сохранение объектов в файл.
Для перенаправления ввода/вывода используется, как и ранее, функция p r in t (), которая может перенаправить поток вывода не на экран, а в файл. При этом рекомендуется подключить модуль sys, который и отвечает за перенаправление.
Соответствующий синтаксис представлен для удобства повторно:
p r i n t ( [элемент вывода).,...] [, se p = ' разделитель ' ] [, еп<1='чем должен быть закончен вывод элемента'] [, file=sys. stdout)
s y s.s td o u t — переменная модуля sys, в которой хранится запись, куда, собственно, будет направлен поток вывода.
Теперь необходимо зайти в папку, где был перезаписан (создан) файл output.txt, и открыть его. В результате там будет записано: «Вывод данных в файл».
Для сохранения сложных объектов используется модуль pickle, который преобразует сложные объекты в поток байтов и обратно (серилизация и десерилизация). В данном модуле реализованы следующие функции:
• dump() — записывает объект в файл;
• load() — загружает объект из файла.