Язык Python в медицинских системах искусственного интеллекта. Ч.1. Введение в программирование на языке Python. Учебное пособие
.pdf●Пакеты позволяют создавать иерархическую структуру модулей.
Создание пакета:
1.создайте папку с именем пакета, например, my_package.
2.внутри папки создайте файл __init__.py. этот файл может быть
пустым или содержать код инициализации пакета. 3. добавьте модули в пакет.
Структура пакета: my_package/
__init__.py module1.py module2.py
Использование пакета:
● импорт модуля из пакета:
from my_package import module1
result = module1.some_function()
● импорт конкретной функции:
from my_package.module2 import another_function
another_function()
Пример использования пакетов в проекте:
●организация кода по функциональным областям.
●повышение читаемости и поддерживаемости кода.
3.2.Работа с файлами
3.2.1. Открытие и закрытие файлов
Открытие файла:
●используется функция open().
●синтаксис:
file_object = open('filename.txt', mode)
31
Режимы открытия:
–'r' — чтение (по умолчанию).
–'w' — запись (создает новый файл или перезаписывает существующий).
–'a' — добавление (дописывает в конец файла).
–'b' — бинарный режим (используется вместе с другими режимами, например, 'rb').
Закрытие файла:
●после работы с файлом необходимо его закрыть:
file_object.close()
Контекстный менеджер with:
●рекомендуется использовать with для автоматического закрытия файла:
with open('filename.txt', 'r') as file_object: data = file_object.read()
2.2 Чтение и запись данных Чтение из файла:
● чтение всего содержимого:
with open('filename.txt', 'r') as f: content = f.read()
● чтение построчно:
with open('filename.txt', 'r') as f: for line in f:
print(line.strip())
● чтение определенного количества символов: with open('filename.txt', 'r') as f:
data = f.read(10) # Читает первые 10
символов
Запись в файл:
● запись строки:
with open('filename.txt', 'w') as f: f.write('Hello, World!')
32
● запись списка строк:
lines = ['Первая строка\n', 'Вторая строка\n']
with open('filename.txt', 'w') as f: f.writelines(lines)
3.2.2.Работа с CSV и JSON файлами
Модуль csv:
● чтение CSV-файла: import csv
with open('data.csv', 'r') as csvfile: reader = csv.reader(csvfile)
for row in reader: print(row)
● запись в CSV-файл: import csv
data = [['Имя', 'Возраст'], ['Анна', '30'], ['Иван', '25']]
with open('data.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile) writer.writerows(data)
Модуль json:
● чтение JSON-файла: import json
with open('data.json', 'r') as jsonfile: data = json.load(jsonfile) print(data)
33
● запись в JSON-файл: import json
data = {'Имя': 'Анна', 'Возраст': 30} with open('data.json', 'w') as jsonfile:
json.dump(data, jsonfile)
3.3. Обработка исключений
3.3.1. Понятие исключений
Что такое исключение?
●Исключение — это событие, которое возникает при ошибке во время выполнения программы.
●Исключения прерывают нормальный ход программы. Примеры исключений:
●ZeroDivisionError: деление на ноль.
●FileNotFoundError: файл не найден.
●ValueError: некорректное значение.
●TypeError: неправильный тип данных.
3.3.2.Блоки try, except, finally
Обработка исключений:
●try: блок кода, в котором может возникнуть исключение.
●except: блок, который перехватывает и обрабатывает исключение.
●finally: блок, который выполняется в любом случае.
Синтаксис: try:
#Код, который может вызвать исключение except ExceptionType:
#Код обработки исключения
finally:
34
# Код, который выполнится в любом случае Пример:
try:
number = int(input("Введите число: ")) result = 10 / number print(f"Результат: {result}")
except ZeroDivisionError: print("Ошибка: деление на ноль!")
except ValueError:
print("Ошибка: некорректное значение.") finally:
print("Завершение программы.")
3.3 Создание собственных исключений Определение собственного исключения:
● создайте класс, наследующий от Exception. class CustomError(Exception):
pass
Использование собственного исключения: def check_value(value):
if value < 0:
raise CustomError("Значение не может быть отрицательным.")
try:
check_value(-5) except CustomError as e:
print(f"Произошла ошибка: {e}")
35
3.4. Объектно-ориентированное программирование
3.4.1. Классы и объекты
Основные понятия:
●Класс — это шаблон или “чертеж” для создания объектов.
●Объект — экземпляр класса с конкретными значениями атрибутов.
Создание класса:
class Person:
def __init__(self, name, age): self.name = name
self.age = age
Создание объекта:
person1 = Person("Анна", 30) print(person1.name) # Вывод: Анна
3.4.2. Наследование
Что такое наследование?
●Механизм, позволяющий создавать новый класс на основе существующего.
●Новый класс (дочерний) наследует атрибуты и методы роди-
тельского класса. Пример наследования:
class Employee(Person):
def __init__(self, name, age, position): super().__init__(name, age) self.position = position
Использование:
employee = Employee("Иван", 25, "Инженер") print(employee.name) # Вывод: Иван print(employee.position) # Вывод: Инженер
36
3.4.3. Полиморфизм
Понятие полиморфизма:
●возможность использования одного интерфейса для разных типов данных.
●методы с одинаковым именем могут вести себя по-разному в разных классах.
Пример:
class Animal:
def sound(self): pass
class Cat(Animal): def sound(self):
print("Мяу")
class Dog(Animal): def sound(self):
print("Гав")
animals = [Cat(), Dog()] for animal in animals:
animal.sound()
Вывод: Мяу Гав
4.4 Инкапсуляция Что такое инкапсуляция?
●Сокрытие внутренней реализации класса от внешнего мира.
●Доступ к данным класса осуществляется через методы. Пример приватных атрибутов:
●в Python нет настоящей приватности, но существует соглашение:
–Атрибуты с одним подчеркиванием _attribute считаются защи-
щенными (protected).
37
– Атрибуты с двумя подчеркиваниями __attribute считаются приватными (private).
class BankAccount:
def __init__(self, balance): self.__balance = balance
def deposit(self, amount): self.__balance += amount
def get_balance(self): return self.__balance
account = BankAccount(1000) account.deposit(500) print(account.get_balance()) # Вывод: 1500
3.5. Генераторы и итераторы
3.5.1. Итераторы в Python
Что такое итератор?
●Объект, который поддерживает протокол итерации: методы
__iter__() и __next__().
●Позволяет перебирать элементы коллекции последовательно. Создание итератора:
class MyIterator:
def __init__(self, limit): self.limit = limit self.current = 0
def __iter__(self):
38
return self
def __next__(self):
if self.current < self.limit: number = self.current self.current += 1
return number else:
raise StopIteration
for num in MyIterator(5): print(num)
# Вывод: 0 1 2 3 4
3.5.2. Генераторы и yield
Что такое генератор?
●Специальная функция, которая возвращает итератор и использует ключевое слово yield.
●Позволяет создавать итераторы более простым способом. Пример генератора:
def my_generator(n): for i in range(n):
yield i * i
for num in my_generator(5): print(num)
# Вывод: 0 1 4 9 16
3.5.3. Генераторные выражения
Синтаксис генераторных выражений:
●похож на списковые включения, но использует круглые скобки.
39
gen_expr = (x * x for x in range(5))
for num in gen_expr: print(num)
# Вывод: 0 1 4 9 16
Преимущества:
●меньшеепотреблениепамяти,таккакэлементыгенерируются по мере необходимости.
3.6.Декораторы
3.6.1. Понятие декораторов
Что такое декоратор?
●Функция, которая принимает другую функцию и расширяет ее функциональность без изменения ее кода.
●Используется для повторного использования кода и повыше-
ния читаемости. Синтаксис декоратора:
def decorator_function(func): def wrapper():
#Действия до вызова функции func()
#Действия после вызова функции return wrapper
@decorator_function def say_hello():
print("Hello!")
3.6.2. Создание собственных декораторов
Пример декоратора:
def greet_decorator(func):
40
