Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание модулей пользователяСодержание книги
Поиск на нашем сайте По мере возрастания сложности программ появляется необходимость разбить их на несколько файлов для облегчения поддержки. Также может возникнуть необходимость в многократном использовании написанных функций в нескольких программах, не копируя их определения в каждую из программ. Во всех этих случаях оправдана разработка модулей. · повторное использование кода: такой код может быть загружен много раз во многих местах; · управление адресным пространством: модуль – это высокоуровневая организация программ, это пакет имен, который избавляет вас от конфликтов. Поэтому модуль – это средство для группировки системных компонентов; · глобализация сервисов и данных: для реализации объекта, который используется во многих местах, достаточно написать один модуль, который будет импортирован. Модуль на языке Python – это файл с расширением .py, содержащий описания функций, классов, переменные и другие объекты, как правило, общей области применения. >>> import my_module Оператор import позволяет также подключать сразу несколько модулей, перечисляя из через запятую. >>> my_module.fibo(12) Непосредственный вызов функции >>> fibo(12) вызовет исключение: NameError: name 'fibo' is not defined Это происходит потому, что пространство имен модуля не входит в пространство имен программы. Для того, чтобы вызвать функцию fibo() непосредственно, т.е. так, как если бы она была описана в самой программе, необходимо использовать оператор from >>> from my_module.fibo(12) import fibo В операторе from можно задавать одновременно сразу несколько объектов модуля, перечисляя их через запятую.
Компиляция и выполнение фрагментов кода Python позволяет во время работы программы динамически осуществлять компиляцию и выполнение отдельных фрагментом кода. Для этого используются следующие встроенные функции (см. подраздел 8.1) лаб. раб. №1): · compile() (см. подраздел 4.1); · exec() (см. подраздел 4.2); · eval() (см. подраздел 4.3).
Функция compile() Встроенная функция compile(source, filename, mode, flags=0,dont_inherit=False, optimize=-1) – компилирует исходный код, указанный аргументом source, в код или объект AST (см. подраздел 8.1 лаб. раб. №1). Объекты кода могут быть выполнены с помощью функций exec() (см. подраздел 4.2) или eval() (см. подраздел 4.3). · 0 – нет оптимизации, значение __debug__ равно True; · 1 – функции assert() удалены, значение __debug__ равно False; · 2 – строки документации удалены также. Функция compile() вызывает исключение SyntaxError, если компилируемый код неверен, и исключение TypeError, если исходный код содержит байты null. >>> my_code= compile (''' Переменная my_code указывает на скомпилированный фрагмент кода. Определим ее тип: >>> type (my_code) Таким образом скомпилированный код имеет тип (класс) code.
Функция exec() Встроенная функция exec(object[, globals[, locals]]) поддерживает динамическое выполнение кода языка Python (см. подраздел 8.1 лаб. раб. №1). Аргумент object должен быть строкой или объектом типа code. Если это строка, то производится ее грамматический разбор, как это делается с операторами языка. После чего происходит ее выполнение (до завершения или до появления ошибки). Если это объект типа code, то он просто выполняется. Надо быть готовым к тому, что операторы return и yield могут не выполняться вне определения функции даже внутри контекста кода, передаваемого функции exec(). Возвращается значение None. >>> x=1.25 другой – с аргументом в виде скомпилированного кода. Для этого воспользуемся переменной my_code, полученной в подразделе 4.1: >>> exec (my_code)
Функция eval() Аргументами встроенной функции eval (expression, globals = None, locals = None) (см. подраздел 8.1 лаб. работы №1) являются: строка expression, задающая выражение, и необязательные словари globals и locals, указывающие пространства имен соответственно глобальных и локальных переменных (см. подраздел 2.4). При выполнении функции осуществляется грамматический разбор выражения и вычисление его значения: >>> x=5 Если аргумент locals опущен, значения берутся из словаря globals. Если опущены оба необязательных аргумента, выражение вычисляется в том окружении, в котором функция eval() была вызвана: >>> x=5 В подразделе 1.1.3 была рассмотрена функция val(x, y, op), выполняющая заданные арифметические операции (op) над двумя числами (x и y). Использование функции eval() в блоке функции val() (новый вариант функции – new_val()) не только делает описание функции намного компактнее: >>> def new_val (x, y, op): но и существенно расширяет функциональные возможности функции eval(), поскольку функция new_val() может выполнять не только те операции, которые были предусмотрены для функции val(): >>> new_val(3, 2, '/') но и любые двуместные операции для операндов x и y: >>> new_val(3,2,'**') Причем даже такие, которых нет среди стандартных операций языка Python: >>> new_val(3, 2, '**2+') В заключение отметим, что eval(repr(object)) возвращает object. Например: >>> eval (repr ("cat"))
Индивидуальные задания Разработать программу на языке Python, в которой: · 1 Определена и выполнена функция func1() с аргументами в виде списка чисел (целых и с плавающей точкой), которая выполняет операцию, заданную колонкой "Операция" табл. №1): § 1 – определение суммы квадратов элементов списка; § 2 – определение максимального числа среди элементов списка; § 3 – определение квадратных корней элементов списка; § 4 – определение минимального числа среди элементов списка; § 5 – определение среднего значения элементов списка; § 6 – определение разности между суммой четных чисел и суммой нечетных чисел (если число не целое – привести к целому); § 7 – определение разности между суммой кубов и суммой квадратов элементов списка. · 2.1 Создан словарь a_dict (числом элементов не меньше 8), ключи которого именуются произвольно, а значения заданы в виде, указанном колонкой "Вид значений" табл. №1): § 1 – латинские буквы; § 2 – цифры; § 3 – буквы кириллицы; § 4 – наименования встроенных функций; § 5 – наименования операторов. При этом отдельные ключи (числом не меньше трех) должны иметь одинаковое значение. · 2.2 Определена функция func2(), которая имеет два аргумента, первый – в виде словаря, второй – указывает значение ключа словаря. Функция func2() возвращает список ключей словаря, значения которых совпадают со значениями второго аргумента. · 3.1 Создан список a_list, элементы которого имеют тип, указанный колонкой "Тип" табл. №1): § 1 – числа; § 2 – логические значения; § 3 – строки; § 4 – списки с элементами в виде чисел; § 5 – списки с элементами в виде строк. · 3.2 Определена функция func3(), которая преобразует каждый элемент заданного списка a_list в целое число (механизм преобразования – на усмотрение студента). · 3.3 Выполнена с использованием функции func3() и метода sort() сортировка элементов списка a_list: § для четных номеров индивидуального задания – по возрастанию; § для нечетных номеров индивидуального задания – по убыванию. · 4.1 Задана строка str_code, содержащая небольшой фрагмент кода на языке Python и получен скомпилированный с помощью встроенной функции compile() код – comp_code. · 4.2 С помощью встроенной функции exec() код comp_code исполнен.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 169; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.146 (0.009 с.) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||