Загрузка данных
ЛАБОРАТОРНАЯ РАБОТА № 7
Функции в языке программирования Python
Дисциплина: Основы алгоритмизации и программирования
Специальность: 09.02.07 «Информационные системы и программирование»
Студент: _________________________ Группа: ______
Преподаватель: ___________________
ЦЕЛЬ: формирование практических навыков создания и использования функций в языке программирования Python: определение функций, передача параметров, возврат значений, использование параметров по умолчанию, механизм *args для переменного количества аргументов, вызов одной функции внутри другой.
ЗАДАЧИ:
1. Изучить синтаксис определения и вызова функций в Python.
2. Научиться применять различные способы передачи аргументов в функции.
3. Освоить использование оператора return для возврата результатов.
4. Изучить механизм *args для обработки переменного количества аргументов.
5. Научиться вызывать функции внутри других функций.
6. Разработать программы, использующие функции для решения поставленных задач.
7. Выполнить индивидуальные задания для самостоятельного решения.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1. Понятие функции в программировании
Функция — это поименованный фрагмент программного кода, который можно многократно вызывать из различных частей программы. Функции являются фундаментальным механизмом структурирования кода и реализуют принцип DRY (Don't Repeat Yourself — «Не повторяйся»).
Основные преимущества использования функций:
ПРЕИМУЩЕСТВО ОПИСАНИЕ
Переиспользование кода Один раз написанную функцию можно вызывать множество раз
Модульность Программа разбивается на небольшие, независимые блоки
Упрощение отладки Ошибку легче найти в маленькой функции, чем в огромном скрипте
Абстракция Детали реализации скрыты, важен только результат
Тестирование Каждую функцию можно проверить отдельно
2. Синтаксис определения функции
В Python функция определяется с помощью ключевого слова def, после которого указываются имя функции, круглые скобки с параметрами и двоеточие. Тело функции записывается с отступом.
Общий синтаксис:
def имя_функции(параметр1, параметр2, ...):
"""Строка документации (docstring) — описание функции"""
# Тело функции
# ... инструкции ...
return результат
Разбор примера:
def calculate_area(width, height):
"""Вычисляет площадь прямоугольника по ширине и высоте"""
area = width * height
return area
def — ключевое слово, сигнализирующее о начале определения функции.
calculate_area — имя функции (выбирается осмысленно).
width, height — параметры функции (переменные, которые получат значения при вызове).
"""...""" — docstring, описывающий назначение функции.
area = width * height — тело функции, где происходят вычисления.
return area — возврат результата в точку вызова.
3. Вызов функции
Чтобы выполнить код внутри функции, её нужно вызвать по имени, указав в скобках конкретные аргументы:
# Вызов функции с аргументами 5 и 3
result = calculate_area(5, 3)
print(result) # Вывод: 15
# Ещё один вызов с другими аргументами
result2 = calculate_area(10, 4)
print(result2) # Вывод: 40
Важно: пока функция не вызвана, код внутри неё не выполняется.
4. Параметры и аргументы
Терминология, которую важно различать:
ТЕРМИН ОПРЕДЕЛЕНИЕ ПРИМЕР
Параметр Переменная в определении функции def func(a, b): — a и b параметры
Аргумент Конкретное значение, передаваемое при вызове func(5, 10) — 5 и 10 аргументы
5. Способы передачи аргументов
5.1 Позиционные аргументы
Аргументы передаются в том же порядке, в котором определены параметры:
def describe_pet(name, animal_type, age):
print(f"{name} — это {animal_type}, возраст {age} лет")
describe_pet("Шарик", "собака", 5)
# Шарик — это собака, возраст 5 лет
5.2 Именованные (ключевые) аргументы
Аргументы передаются с указанием имени параметра, порядок не важен:
describe_pet(age=5, name="Шарик", animal_type="собака")
# Результат тот же — Шарик — это собака, возраст 5 лет
5.3 Смешанный способ
Сначала указываются позиционные аргументы, затем именованные:
describe_pet("Шарик", animal_type="собака", age=5)
Ошибка — именованные аргументы не могут идти перед позиционными:
describe_pet(age=5, "Шарик", "собака") # SyntaxError!
6. Параметры по умолчанию
Параметры могут иметь значения по умолчанию. Если при вызове аргумент не передан, используется значение по умолчанию.
def greet(name, greeting="Здравствуйте"):
print(f"{greeting}, {name}!")
greet("Анна") # Здравствуйте, Анна!
greet("Пётр", "Привет") # Привет, Пётр!
greet(name="Мария", greeting="Доброе утро") # Доброе утро, Мария!
Важные правила:
Параметры с значениями по умолчанию должны идти после обязательных параметров.
Значение по умолчанию вычисляется один раз в момент определения функции, а не при каждом вызове.
# Правильно
def func(a, b=10):
pass
# Неправильно — вызовет синтаксическую ошибку
def func(a=10, b):
pass
7. Оператор return
Оператор return завершает выполнение функции и возвращает указанное значение.
def max_of_two(a, b):
if a > b:
return a # если условие истинно, функция завершится здесь
else:
return b # иначе завершится здесь
print("Эта строка никогда не выполнится")
Особенности return:
СИТУАЦИЯ РЕЗУЛЬТАТ
return значение Функция возвращает указанное значение
return (без значения) Функция возвращает None
Отсутствует return Функция возвращает None
return значение1, значение2 Возвращает кортеж из значений
Пример с возвратом нескольких значений:
def swap(a, b):
"""Меняет значения местами"""
return b, a
x, y = swap(10, 20)
print(x, y) # 20 10
# Или работать с кортежем
result = swap(5, 3)
print(result) # (3, 5)
8. Переменное количество аргументов (*args)
Иногда количество передаваемых аргументов заранее неизвестно. Для этого используется конструкция *args (звездочка перед именем параметра).
Как это работает: все переданные позиционные аргументы собираются в кортеж с именем args.
def sum_numbers(*args):
"""Принимает любое количество чисел и возвращает их сумму"""
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # 6
print(sum_numbers(10, 20, 30, 40)) # 100
print(sum_numbers(5)) # 5
print(sum_numbers()) # 0 (пустой кортеж)
Имя args — это соглашение. Можно использовать любое имя, главное — звёздочка:
def my_function(*numbers):
print(numbers)
my_function(1, 2, 3) # (1, 2, 3)
9. Вызов функции внутри другой функции
Одна функция может вызывать другую. Это помогает разбивать сложные задачи на простые шаги.
Пример:
def is_even(number):
"""Проверяет, является ли число чётным"""
return number % 2 == 0
def count_evens(*args):
"""Считает количество чётных чисел среди переданных"""
count = 0
for num in args:
if is_even(num): # вызов другой функции
count += 1
return count
print(count_evens(1, 2, 3, 4, 5, 6)) # 3
10. Локальные и глобальные переменные
Локальные переменные создаются внутри функции и видны только в ней. Они существуют, пока выполняется функция, и уничтожаются после её завершения.
Глобальные переменные создаются вне всех функций и видны во всей программе.
global_var = 100 # глобальная переменная
def test():
local_var = 50 # локальная переменная
print(global_var) # можно читать глобальную
# global_var = 200 # нельзя изменять глобальную без special keyword
def modify_global():
global global_var # ключевое слово для изменения глобальной
global_var = 200
test() # 100
modify_global()
print(global_var) # 200
# print(local_var) # Ошибка! local_var не существует вне функции
Рекомендация: избегать изменения глобальных переменных внутри функций. Передавайте всё через параметры и возвращайте результаты.
11. Документирование функций (docstring)
Docstring — это строка документации, которая помещается сразу после заголовка функции. Она описывает назначение функции, параметры и возвращаемое значение.
def divide(a, b):
"""
Делит первое число на второе.
Параметры:
a (float): делимое
b (float): делитель
Возвращает:
float: результат деления a на b
Исключения:
Если b == 0, возвращает строку с сообщением об ошибке
"""
if b == 0:
return "Ошибка: деление на ноль"
return a / b
Просмотреть документацию можно с помощью функции help():
help(divide)
12. Примеры функций различного назначения
Функция без параметров:
def say_hello():
"""Просто выводит приветствие"""
print("Привет, мир!")
Функция с параметрами и возвратом:
def average(a, b):
"""Возвращает среднее арифметическое двух чисел"""
return (a + b) / 2
Функция с проверкой условия:
def is_positive(number):
"""Возвращает True, если число положительное, иначе False"""
return number > 0
Функция с циклом:
def factorial(n):
"""Вычисляет факториал числа n (n! = 1 * 2 * ... * n)"""
result = 1
for i in range(1, n + 1):
result *= i
return result
13. Типичные ошибки при работе с функциями
ОШИБКА ПРИМЕР НЕПРАВИЛЬНОГО КОДА ПОЧЕМУ НЕПРАВИЛЬНО
Забыт return def add(a,b): a+b Функция вернёт None
Неправильный порядок параметров def func(a=1, b): pass Параметры по умолчанию должны быть после обязательных
Использование локальной переменной снаружи def f(): x=5; print(x) после вызова print(x) Переменная x существует только внутри функции
Вызов функции без скобок my_function вместо my_function() Ссылка на функцию, а не её вызов
Изменение глобальной переменной без global x=5; def f(): x=10 Создаст новую локальную переменную x
САМОСТОЯТЕЛЬНЫЕ ЗАДАНИЯ
Необходимо выполнить все 10 заданий. Для каждого задания требуется:
Написать функцию в соответствии с условием.
Продемонстрировать её работу на нескольких тестовых примерах (вызовы с разными аргументами).
Включить в отчёт листинг программы и скриншоты результатов выполнения.
Задание 1
Написать функцию, которая принимает 2 числа и возвращает меньшее из них.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 2
Написать функцию, которая возводит переданное число в указанную степень. Запрещено использовать оператор ** и функцию pow().
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 3
Написать функцию, которая принимает 2 числа и знак (+, -, *, /), выполняет соответствующее арифметическое действие и возвращает результат. Предусмотреть обработку деления на ноль.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 4
Написать функцию, которая проверяет, является ли переданное ей число простым. Функция должна возвращать True, если число простое, и False в противном случае. Напомним, что простое число — это число больше 1, которое делится только на 1 и на само себя.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 5
Написать функцию, которая принимает число и выводит таблицу умножения для этого числа (от 1 до 10). После написания функции вызвать её для всех чисел от 2 до 9 (т.е. в программе должен быть цикл, который вызывает эту функцию для чисел 2, 3, 4, 5, 6, 7, 8, 9).
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 6
Написать функцию, которая реализует работу оператора % (остаток от деления). Функция принимает 2 параметра и возвращает остаток от деления первого параметра на второй. Внутри функции использовать только операции +, -, *, /. Оператор % использовать запрещено.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 7
Написать функцию, которая принимает от 1 до 5 чисел и возвращает их сумму. Использовать механизм *args.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 8
Написать функцию, которая принимает от 1 до 5 чисел и возвращает большее из них. Использовать механизм *args.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 9
Написать функцию, которая выводит все чётные или нечётные числа в указанном пользователем диапазоне. Функция принимает три параметра:
начало диапазона
конец диапазона
третий параметр типа bool (если True — выводить чётные числа, если False — выводить нечётные числа)
Функция должна выводить числа на экран, ничего не возвращая.
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
Задание 10
Написать функцию, которая принимает дату (день, месяц, год) и возвращает дату следующего дня в виде строки формата «дд.мм.гггг».
Требования:
Проверку на високосный год оформить в виде отдельной функции (которая принимает год и возвращает True, если год високосный, и False в противном случае).
Учитывать разное количество дней в месяцах (январь — 31, февраль — 28 или 29, март — 31 и т.д.).
Учитывать переход через конец месяца и конец года.
Справка о високосных годах: Год является високосным, если он делится на 4, но не делится на 100, за исключением годов, которые делятся на 400 (например, 2000 — високосный, 1900 — не високосный).
Листинг программы:
# Вставьте сюда код вашей программы
Результат выполнения (скриншот):
(Вставьте скриншот консоли с результатами работы программы)
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое функция в программировании? Какие преимущества даёт использование функций?
Ответ:
2. С помощью какого ключевого слова в Python определяется функция? Приведите синтаксис.
Ответ:
3. В чём разница между параметром и аргументом функции? Приведите пример.
Ответ:
4. Какие способы передачи аргументов в функцию существуют в Python? Опишите каждый.
Ответ:
5. Что такое параметры по умолчанию? Какое правило нужно соблюдать при их использовании?
Ответ:
6. Для чего нужен оператор return? Что вернёт функция, если в ней нет оператора return?
Ответ:
7. Как функция может вернуть несколько значений? Приведите пример.
Ответ:
(В этом разделе студент даёт письменные ответы на вопросы)
ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА
1. Отчёт выполняется в текстовом редакторе (MS Word или аналог) в соответствии с требованиями ГОСТ или стандарта учебного заведения.
2. Титульный лист должен содержать название учебного заведения, дисциплины, номер и тему работы, ФИО и группу студента, ФИО преподавателя, город и год.
3. Обязательно наличие цели, задач и теоретической части.
4. Для каждого задания самостоятельной работы должны быть представлены:
o Условие задачи.
o Листинг (текст) программы, оформленный моноширинным шрифтом (например, Courier New).
o Скриншоты консоли с результатами выполнения программы для различных тестовых данных.
5. В конце отчёта должны быть представлены ответы на контрольные вопросы и вывод.
ВЫВОДЫ
(Студент самостоятельно формулирует вывод о том, какие навыки и знания были получены в ходе выполнения работы, с какими конструкциями познакомился, какие типичные ошибки были допущены и как они исправлялись. Обязательно отметить практическую значимость изученного материала.)
Рекомендуемая структура вывода:
Какие темы были изучены в ходе работы.
Какие задания вызвали наибольшие трудности и почему.
Как полученные навыки можно применить на практике.
Общая оценка результатов работы.
Отработано часов: 4
Подпись студента: _____________ Дата: ______
СПИСОК ЛИТЕРАТУРЫ
1. PythonRu. Функции в Python: определение, вызов, аргументы, return [Электронный ресурс]. — Режим доступа: https://pythonru.com/osnovy/funkcii-v-python (дата обращения: 10.05.2026).
2. Smartiqa. Задачник по Python. Функции [Электронный ресурс]. — Режим доступа: https://smartiqa.ru/python-workbook/functions (дата обращения: 10.05.2026).
3. Документация Python. Определение функций [Электронный ресурс]. — Режим доступа: https://docs.python.org/3/tutorial/controlflow.html#defining-functions (дата обращения: 10.05.2026).