Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание функций пользователяСодержание книги
Поиск на нашем сайте ЛАБОРАТОРНАЯ РАБОТА №5 Тема: Разработка функций и модулей пользователя Цель: Рассмотрение особенностей разработки функций и модулей пользователя ОГЛАВЛЕНИЕ 1 Создание функций пользователя
Создание функций пользователя Помимо использования встроенных функций языка Python и методов его классов, пользователь может создавать и использовать свои собственные функции.
Описание функции Описание любой функции начинается со служебного слова def и имеет следующий вид def <имя функции>([<параметры>]): Функция может не иметь формальных параметров, иметь один такой параметр или несколько. Если функция имеет несколько параметров, то они перечисляются через запятую. >>> def fibo (k): Отметим, что созданная функция является объектом: >>> print (isinstance (fibo, object)) который можно вызвать по имени, потому что встроенная функция callable() (см. раздел 8.1 лаб. раб. №1) возвращают значение True: >>> print (callable (fibo)) и получить 10 чисел Фибоначчи: >>> print (fibo(10)) Функция fibo() оформлена в виде файла ... \LAB6\fibo.py, имеет один параметр k, с помощью которого пользователь задает число необходимых ему чисел Фибоначчи. В строке документирования указано назначение функции и ее параметра. · с помощью позиционных аргументов (см. подраздел 1.1.1); · с помощью именнованных аргументов (см. подраздел 1.1.2); · с помощью аргументов, имеющих значения по умолчанию (см. подраздел 1.1.3); · с помощью аргументов, заданных списком (см. подраздел 1.1.4); · с помощью аргументов, заданных словарем (см. подраздел 1.1.5).
Lambda функции lambda функции широко используются в языках функционального программирования. Поэтому в языке Python осуществлена их поддержка: >>> def f1 (n): return lambda x:x**n >>> f2=f1(3) Можно просто вызвать функцию f1: >>> f1(3)(5) Использование lambda функции показано также в подразделе 1.5.2.
Замыкание Замыкание – это особый вид функции, которая определена в теле другой функции и создается каждый раз при выполнении внешней функции. При этом вложенная внутренняя функция содержит ссылки на локальные переменные внешней функции. >>> def make_add (x): >>> make_add(2)(3) Отметим, что в языке Python изменять значения можно только тех переменных замыкания, которые относятся к изменяемым типам. Поэтому при выполнении примера, в котором подчитывается число вызовов функции замыкания, заданного целочисленным типом: >>> def create_counter (count_calls=0): возникает ошибка: nboundLocalError: local variable 'count_calls' referenced before assignment. Исправить положение можно, задав число вызовов в виде элемента списка: >>> def create_counter (count_calls=[0]): >>> create_counter()()
Использование функции map() Для формирования данных может быть использована встроенная функция map(function,iterable) (см. подраздел 8.1 лаб. раб. №1), которая имеет те же аргументы, что и функция map(), но выполняет не фильтрацию, а формирование с помощью функции function элементов итератора из элементов iterable. >>> tuple (map (lambda x:x*x-1, range (1,10)))
Функция 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 исполнен.
ЛАБОРАТОРНАЯ РАБОТА №5 Тема: Разработка функций и модулей пользователя Цель: Рассмотрение особенностей разработки функций и модулей пользователя ОГЛАВЛЕНИЕ 1 Создание функций пользователя
Создание функций пользователя Помимо использования встроенных функций языка Python и методов его классов, пользователь может создавать и использовать свои собственные функции.
Описание функции Описание любой функции начинается со служебного слова def и имеет следующий вид def <имя функции>([<параметры>]): Функция может не иметь формальных параметров, иметь один такой параметр или несколько. Если функция имеет несколько параметров, то они перечисляются через запятую. >>> def fibo (k): Отметим, что созданная функция является объектом: >>> print (isinstance (fibo, object)) который можно вызвать по имени, потому что встроенная функция callable() (см. раздел 8.1 лаб. раб. №1) возвращают значение True: >>> print (callable (fibo)) и получить 10 чисел Фибоначчи: >>> print (fibo(10)) Функция fibo() оформлена в виде файла ... \LAB6\fibo.py, имеет один параметр k, с помощью которого пользователь задает число необходимых ему чисел Фибоначчи. В строке документирования указано назначение функции и ее параметра. · с помощью позиционных аргументов (см. подраздел 1.1.1); · с помощью именнованных аргументов (см. подраздел 1.1.2); · с помощью аргументов, имеющих значения по умолчанию (см. подраздел 1.1.3); · с помощью аргументов, заданных списком (см. подраздел 1.1.4); · с помощью аргументов, заданных словарем (см. подраздел 1.1.5).
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-11-27; просмотров: 217; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.10 (0.007 с.) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||