Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание модулей пользователя ⇐ ПредыдущаяСтр 2 из 2
По мере возрастания сложности программ появляется необходимость разбить их на несколько файлов для облегчения поддержки. Также может возникнуть необходимость в многократном использовании написанных функций в нескольких программах, не копируя их определения в каждую из программ. Во всех этих случаях оправдана разработка модулей. · повторное использование кода: такой код может быть загружен много раз во многих местах; · управление адресным пространством: модуль – это высокоуровневая организация программ, это пакет имен, который избавляет вас от конфликтов. Поэтому модуль – это средство для группировки системных компонентов; · глобализация сервисов и данных: для реализации объекта, который используется во многих местах, достаточно написать один модуль, который будет импортирован. Модуль на языке 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; просмотров: 107; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.114.132 (0.034 с.) |