Python для начинающих
1.09K subscribers
304 photos
3 videos
232 files
62 links
Python для начинающих
Download Telegram
Основы тестирования кода: Юнит-тестирование в Python
Загляните в мир программирования, и вы неизбежно столкнетесь с понятием тестирования. Это одна из тех тем, о которой все говорят, но мало кто уделяет ей должное внимание, пока не окажется слишком поздно. Сегодня мы окунемся в мир юнит-тестирования в Python, и, поверьте, это путешествие будет увлекательнее, чем кажется.

Итак, представьте, что ваш код — это замок из песка. Он может выглядеть внушительно, пока не придет первое напряжение или ошибка, которая рушит всю конструкцию. Юнит-тестирование — это ваша защита, способ убедиться, что ваш замок не развалится даже от сильного ветра.

В мире Python юнит-тестирование становится простым благодаря встроенному модулю unittest. Его легко не заметить среди огромного множества возможностей Python, но осознать его мощь стоит каждому разработчику.

Начнем с простого примера. Представьте, что у нас есть функция, которая возвращает квадрат числа:

def square(x):
return x * x


Первая реакция: "Эта функция проста, ей тесты не нужны!" Но представьте, что в один момент функция изменилась, и вместо умножения она начала использовать сложение. Запомните: тесты — это ваши преданные друзья, которые не дадут вам оступиться.

Напишем для неё тест:

import unittest

class TestMathFunctions(unittest.TestCase):
def test_square(self):
self.assertEqual(square(2), 4)
self.assertEqual(square(-3), 9)
self.assertEqual(square(0), 0)

if __name__ == '__main__':
unittest.main()


Здесь мы создали класс TestMathFunctions, который наследует unittest.TestCase. Метод test_square проверяет нашу функцию square с несколькими значениями. Запуская этот файл, мы мгновенно узнаем, если что-то пойдёт не так.

Но что, если вам нужно учитывать больше, чем просто квадратное число? Представьте, у нас есть функция, переводящая градусы Цельсия в Фаренгейты:

def celsius_to_fahrenheit(c):
return (c * 9/5) + 32


И снова тесты приходят на помощь:

class TestConversionFunctions(unittest.TestCase):
def test_celsius_to_fahrenheit(self):
self.assertAlmostEqual(celsius_to_fahrenheit(0), 32)
self.assertAlmostEqual(celsius_to_fahrenheit(100), 212)


Функция assertAlmostEqual позволяет учитывать незначительные погрешности, которые могут возникнуть из-за особенностей вычислений.

Юнит-тестирование — это как раз тот момент, когда вы становитесь героем для будущего себя. Оно не только помогает ловить ошибки на ранних этапах, но и позволяет уверенно вносить изменения в код. И самое главное — это просто и быстро! Откройте для себя тестирование, и пускай ваш код будет устойчив, словно дом кирпичный, а не песочный замок.
🔥3
Настройка виртуального окружения для проектов на Python
Настройка виртуального окружения для проектов на Python: магия изоляции

В программировании всегда наступает тот момент, когда ты понимаешь, что пора уходить от хаоса и создавать порядок. Работа с Python проектами — не исключение. На ранних стадиях разработки можно незаметно оказаться в ловушке, когда различные проекты начинают конфликтовать друг с другом из-за несовместимых зависимостей. В такие моменты на помощь приходят виртуальные окружения — наша спасительная палочка-выручалочка. Давайте же разберёмся, как настроить это чудо!

Представьте себе ситуацию: у вас есть два проекта, и для одного требуется библиотека pandas версии 1.2.4, а для другого — свежая версия 1.3.0. Если вы начнёте устанавливать их глобально, очень скоро вы рискуете окунуться в море ошибок. Виртуальные окружения позволяют изолировать зависимости каждого проекта, как будто они каждый живут в своем маленьком пузыре.

Начнём с самого начала. Имея на своём устройстве установленный Python (если ещё не установлено, то в интернете масса инструкций по установке), мы уже готовы к созданию виртуальных окружений. Для этого существует встроенный модуль venv. Чтобы создать виртуальное окружение, достаточно выполнить команду:

python -m venv myproject_env


Здесь myproject_env — это название вашего виртуального окружения. Придумайте любое имя, которое позволит вам быстро понять, для какого проекта это окружение.

После создания, виртуальное окружение необходимо активировать. Это всё равно, что разбудить его ото сна. На Windows это делается так:

myproject_env\Scripts\activate


На macOS и Linux всё немного иначе:

source myproject_env/bin/activate


Та-да! Теперь вы находитесь в изолированной вселенной, где все библиотеки будут устанавливаться только для вашего проекта. Вы можете свободно устанавливать необходимые пакеты и быть уверенными, что они не повлияют на другие разработки:

pip install pandas==1.2.4


Иногда, после долгой работы, может оказаться, что вам нужно выйти из виртуального окружения и вернуться в реальный мир. Просто выполните команду:

deactivate


Вот и всё! Теперь вы знаете, как удержать хаос в узде и сделать так, чтобы каждый ваш проект жил своей жизнью, не мешая остальным. Настройка виртуального окружения — это один из ключевых элементов профессиональной разработки. Используйте эту магию изоляции в своих проектах и продолжайте прогрессировать в мире Python!
👍5🔥2
Работа с базами данных: Введение в SQLite в Python
Приветствую тебя, дорогой читатель! Сегодня мы с тобой отправимся в невероятное путешествие в мир баз данных. И в качестве нашего верного спутника выступит язык программирования Python. Готов? Тогда заваривай чай, устраивайся поудобнее — мы погружаемся в дебри SQLite!

Начнем с самого главного — почему SQLite? Это простейшая в настройке и использовании база данных. Она встроена в сам Python, не требует установки дополнительных серверов и идеально подходит для небольших проектов или локальных приложений. Представь себе карманный нож швейцарской армии — маленький, компактный и невероятно полезный. Именно таким инструментом является SQLite в мире баз данных.

Теперь давай разберемся, как можно работать с этой базой данных в Python. Для этого нам потребуется модуль sqlite3. Он уже входит в стандартную библиотеку, так что добавлять ничего не нужно. Начнем с создания простой базы данных и одной таблицы в ней.

import sqlite3

# Создание подключения
connection = sqlite3.connect('mydatabase.db')

# Создание курсора
cursor = connection.cursor()

# Создание таблицы
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')

# Подтверждение изменений
connection.commit()

# Закрытие подключения
connection.close()


Что мы здесь видим? Мы создаем подключение к файлу базы данных mydatabase.db. Если файла не существует, он будет создан автоматически! Далее с помощью курсора (нет, не компьютерного, а специального объекта для работы с запросами) мы создаем таблицу users.

Хорошо, таблицу мы создали. А как насчет добавления данных? Давай научимся добавлять нового пользователя в нашу таблицу.

def add_user(name, age):
connection = sqlite3.connect('mydatabase.db')
cursor = connection.cursor()

cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', (name, age))

connection.commit()
connection.close()

add_user('Alice', 30)
add_user('Bob', 25)


Вот так просто мы добавили двух пользователей — Алису и Боба — в нашу базу данных. Обрати внимание на использование ? внутри SQL-запроса. Это позволяет защититься от SQL-инъекций, доверяя вводимые данные SQLite.

А как же извлечение данных? Давай достанем всех пользователей и выведем их на экран.

def fetch_users():
connection = sqlite3.connect('mydatabase.db')
cursor = connection.cursor()

cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()

for row in rows:
print(row)

connection.close()

fetch_users()


И voilà! Мы видим весь список наших пользователей. Здесь, в светлом будущем работы с базами данных, твои навыки в Python помогут создавать мощные и эффективные решения. Надеюсь, этот небольшой экскурс вдохновил тебя покорить новые горизонты!

Спасибо за внимание, надеюсь, ты узнал что-то новое. Если так, то мы уже достигли цели этого поста!
🔥2👍1
Как работать с изображениями с помощью PIL и OpenCV
Привет, дорогие читатели! Сегодня я расскажу вам о мире обработки изображений в Python с помощью двух популярных библиотек: PIL (Python Imaging Library) и OpenCV. Эти инструменты позволяют нам легко и эффективно работать с изображениями, и вы удивитесь, насколько это просто и увлекательно!

Начнем с PIL, которая сейчас известна как Pillow. Это мощная библиотека, легко справляющаяся с множеством задач: от базовой загрузки и сохранения изображений до более сложных операций, таких как изменение размера и фильтрация. Например, чтобы начать работать с картинкой, её нужно всего лишь загрузить:

from PIL import Image

# Загрузка изображения
img = Image.open("example.jpg")

# Вывод размерности изображения
print(f"Image size: {img.size}")

# Сохранение изображения в другом формате
img.save("example.png")


Вот так просто вы уже можете открыть изображение, узнать его размер и даже сохранить в другом формате. А как насчет фильтров? Давайте попробуем применить эффект размытия с помощью встроенного фильтра:

from PIL import ImageFilter

# Применение размытия
blurred_img = img.filter(ImageFilter.BLUR)
blurred_img.save("blurred_example.jpg")


Теперь представьте, что вам нужно не просто отредактировать изображения, но и обрабатывать видео в реальном времени. Здесь на помощь приходит OpenCV. Эта библиотека подходит для более сложных вычислительных задач и поддерживает работу с видео. Начнем с простого примера: чтение и отображение изображения.

import cv2

# Загрузка изображения
img_cv = cv2.imread("example.jpg")

# Отображение изображения в отдельном окне
cv2.imshow('Displayed Image', img_cv)
cv2.waitKey(0)
cv2.destroyAllWindows()


Совсем несложно, правда? OpenCV также обладает мощным функционалом для таких задач, как преобразование в градации серого, обнаружение краев и многое другое. Давайте попробуем преобразовать наше изображение в оттенки серого:

# Преобразование изображения в градации серого
gray_img = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY)
cv2.imwrite("gray_example.jpg", gray_img)


А для более динамичных задач, как, например, работа с видео, вы можете использовать OpenCV для захвата и отображения потокового видео:

cap = cv2.VideoCapture(0)  # Открытие камеры

while True:
ret, frame = cap.read()
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('Video Stream', gray_frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()


Пара строк кода — и вы уже обрабатываете видеопоток в режиме реального времени!

Использование таких библиотек, как PIL и OpenCV, открывает множество возможностей для обработки изображений. От редактирования фото до сложных аудиовизуальных проектов — всё это по силам каждому, вооружившемуся базовыми знаниями Python и хорошей дозой креативности! Удачи в ваших экспериментах и до новых запусков!
👍2🔥2
Использование регулярных выражений для поиска и замены
Привет, друзья! Сегодня мы с вами отправимся в захватывающее путешествие по миру регулярных выражений в Python. Эти маленькие магические заклинания помогают нам искать, извлекать и заменять текстовые данные с фантастической точностью и ловкостью.

Регулярные выражения в Python реализованы в модуле re. Представьте, что вам нужно найти все email-адреса в тексте. Мы могли бы обратиться к re, как к верному спутнику в этом деле. С помощью регулярных выражений мы сможем выудить их за считаные секунды!

Давайте рассмотрим маленький примерчик:

import re

text = "Contact us at: info@example.com or support@site.org"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b', text)
print(emails)


Что тут происходит? С помощью функции re.findall мы запускаем поиск по строке text. Наше "заклинание" r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b' выглядит как нечто таинственное, но на самом деле оно просто описывает, как выглядит email. И вот, мы поймали двух хитрецов — наши адреса!

Но поиск — это лишь полдела, часто нам хочется не только найти, но и подправить те самые строки. Допустим, мы решили, что все упоминания "test" в тексте надо заменить на "exam". Что ж, re.sub нам в помощь!

pattern = r'test'
replacement = 'exam'
text = "This is just a test."
new_text = re.sub(pattern, replacement, text)
print(new_text)


И вот, наш тест превратился в экзамен, а мы даже не успели испугаться! re.sub позволяет заменить все вхождения заданного шаблона на то, что мы пожелаем.

Помните главное: регулярные выражения — это не столько про сложность, сколько про простоту в повторяющихся задачах. Осталось только позволить вашему любопытству взять верх, ведь возможности re безграничны. От простого поиска до сложных операций — когда-то сложная задача может стать увлекательной игрой.

Вот и все на сегодня! Надеюсь, вы получили удовольствие и вдохновение попробовать свои силы с регулярными выражениями. Они могут привести небольшую магию в ваш код, позволяя вам писать более эффективные и лаконичные программы. До встречи в следующем посте!
👍5🔥2
Работа с электронными таблицами: Управление Excel файлами в Python
Привет, друзья! Когда речь заходит о Python, его возможности почти безграничны, и сегодня я хочу рассказать вам о том, как с помощью Python можно управлять Excel файлами. Наверняка многие из вас сталкивались с необходимостью обработки данных в Excel, будь то анализ финансовых таблиц или учет инвентаря. С помощью Python и библиотеки openpyxl эта задача превращается в увлекательное и простое приключение!

openpyxl — это мощная библиотека для работы с Excel файлами формата .xlsx. Она позволяет создавать, редактировать и даже стилизовать таблицы всего за несколько строк кода. Давайте разберемся, как это работает на практике.

Для начала установим библиотеку, если она еще не установлена:

pip install openpyxl


Теперь давайте создадим новый Excel файл и добавим в него немного данных. Начнем с создания рабочей книги и добавления данных в ячейки:

from openpyxl import Workbook

# Создаем новую рабочую книгу
wb = Workbook()

# Активируем лист
ws = wb.active

# Добавляем данные
ws['A1'] = 'Name'
ws['B1'] = 'Age'
ws['A2'] = 'Alice'
ws['B2'] = 28
ws['A3'] = 'Bob'
ws['B3'] = 34

# Сохраняем файл
wb.save('sample.xlsx')


Этот небольшой скрипт создает файл sample.xlsx с небольшой таблицей. Но это только начало!

Теперь, когда у нас есть базовые данные, давайте попробуем изменить файл, добавив вычисление среднего возраста:

from openpyxl import load_workbook

# Загружаем существующую книгу
wb = load_workbook('sample.xlsx')

# Активируем лист
ws = wb.active

# Добавляем формулу для среднего возраста
ws['B4'] = '=AVERAGE(B2:B3)'

# Сохраняем изменения
wb.save('sample.xlsx')


Вот так просто мы добавили формулу, и теперь Excel сам посчитает средний возраст за нас. Но что, если вам нужно что-то более захватывающее? Например, изменить стиль ячеек.

from openpyxl.styles import Font

# Изменим шрифт заголовков на жирный
bold_font = Font(bold=True)
ws['A1'].font = bold_font
ws['B1'].font = bold_font

# Сохраняем файл
wb.save('styled_sample.xlsx')


Теперь наши заголовки выделены жирным шрифтом, что добавляет таблице немного стиля!

Итак, мы прошли всего лишь через несколько возможностей, которые предлагает openpyxl. Эта библиотека открывает двери к автоматизации задач с электронными таблицами, будь то создание отчетов или обработка больших объемов данных.

Следите за обновлениями, ведь впереди у нас еще много интересных тем, связанных с Python!
👍3🔥3
Как записывать и воспроизводить видео с помощью OpenCV
Привет, друзья! Сегодня мы погрузимся в увлекательный мир работы с видео в Python, используя мощный и популярный модуль OpenCV. Как известно, OpenCV - это библиотека компьютерного зрения, которая открывает перед нами безграничные возможности в обработке изображений и видео. Давайте вместе разберёмся, как можно записывать и воспроизводить видео с помощью этой замечательной библиотеки!

Начнем с установки. Убедитесь, что у вас установлен OpenCV. Если нет, то его очень легко установить через pip:

pip install opencv-python


Теперь, когда у нас есть всё необходимое, давайте приступим к записи видео. Представьте, что у вас есть желание запечатлеть свои умения в кулинарии или же записать видео с вашей веб-камеры. Вот как это можно сделать:

import cv2

# Открываем доступ к камере. Номер "0" означает, что мы используем первую найденную камеру.
cap = cv2.VideoCapture(0)

# Определяйте кодек и создавайте объект записи видео
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

while(cap.isOpened()):
ret, frame = cap.read()
if ret:
# Записываем текущий кадр
out.write(frame)

# Показываем текущий кадр
cv2.imshow('frame', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break

# Освобождаем все ресурсы
cap.release()
out.release()
cv2.destroyAllWindows()


Этот скрипт захватывает видео с вашей веб-камеры и сохраняет его в файл output.avi. Здесь мы используем VideoCapture() для подключения к камере, а объект VideoWriter() — для записи видео. Кодек 'XVID' отвечает за формат видео, а параметры 20.0 и (640, 480) определяют частоту кадров и размер видео.

Теперь давайте посмотрим, как можно воспроизвести записанное видео. Это также достаточно просто:

import cv2

# Открываем сохранённое видео
cap = cv2.VideoCapture('output.avi')

while(cap.isOpened()):
ret, frame = cap.read()
if ret:
cv2.imshow('frame', frame)

if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break

# Освобождаем ресурсы
cap.release()
cv2.destroyAllWindows()


Воспроизведение видео очень похоже на его запись. Мы снова используем VideoCapture(), но теперь передаем в него имя файла нашего видео. А затем в цикле читаем и показываем каждый кадр.

Вот и всё, друзья! Теперь у вас есть базовые навыки работы с видео в OpenCV. Мы рассмотрели, как захватывать видео с камеры и как воспроизводить видеофайлы, используя Python. Надеюсь, вам было интересно и полезно, и вы смогли глубже погрузиться в возможности OpenCV.
🔥2👍1
Работа с сетевыми приложениями: Основы сокетов в Python
Привет, друзья! Сегодня я хочу поговорить о теме, которая может быть как пугающей, так и чрезвычайно увлекательной — это сокеты в Python. Представьте себе, что сеть — это огромный арочный мост, а сокеты — это машины, которые по нему передвигаются. Понимание того, как эти "машины" работают, откроет для вас множество дверей в мир сетевых приложений.

Итак, давайте разберемся, что же такое сокеты. Сам по себе сокет — это точка конца связи в сети, которая позволяет обмениваться данными между различными устройствами. Python, в своем фирменном стиле, упрощает работу с сокетами благодаря удобному модулю socket.

Начнем с простого примера — создание клиент-сервера. Сервер будет ждать подключения от клиента, а клиент будет передавать сообщение серверу. Чтобы обеспечить это чудо общения, начнем с создания сервера:

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen()

print('Server is waiting for a connection...')
connection, address = server_socket.accept()
print(f'Connected to {address}')

data = connection.recv(1024).decode()
print(f'Received: {data}')

connection.close()
server_socket.close()


Здесь мы создаем серверный сокет, который привязывается к "localhost" и прослушивает порт 12345. Как только клиент подключается, сокет принимает это соединение и получает данные.

Теперь давайте создадим клиента, который будет отправлять сообщение серверу:

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))

client_socket.sendall('Hello, Server!'.encode())
client_socket.close()


Клиент создает сокет, который подключается к тому же адресу и порту, что и сервер, после чего отправляет сообщение.

Как видите, основная концепция довольно проста: сервер ждет, клиент подключается и отправляет сообщение. Но, конечно, за этими простыми строчками кода стоят более сложные механизмы, которые обеспечивают надежность и скорость передачи данных.

Сокеты в Python — это как волшебная палочка для создания ваших собственных сетевых приложений. Используя их, вы можете построить все что угодно: от небольших чат-ботов до сложных серверных архитектур. Так что, если вы еще не пробовали, самое время окунуться в этот удивительный мир!

Надеюсь, этот небольшой экскурс в мир сокетов вдохновит вас углубиться в изучение сетевого программирования. До новых встреч в нашем блоге!
👍4🔥1
Как следить за вашим кодом с использованием логирования
Привет, друзья! Сегодня я поделюсь с вами увлекательным путешествием в мир логирования на Python. Вы когда-нибудь задумывались, как следить за работой вашего кода и быстро находить ошибки? Логирование – это ваш верный помощник в этом деле!

Когда я только начинал свой путь программиста, одной из магических техник, которые я узнал, стало логирование. Представьте себе детективный сериал, где главный герой анализирует улики, чтобы разгадать сложное дело. Вот примерно так и работает логирование, помогая "разобраться" в вашем коде.

Для начала, познакомимся с модулем logging – настоящей находкой для программистов на Python. Им можно пользоваться как на маленьких скриптах, так и в больших приложениях. Давайте посмотрим, как это работает.

import logging

logging.basicConfig(level=logging.INFO)

def calculate_sum(a, b):
logging.info(f"Calculating sum of {a} and {b}")
return a + b

result = calculate_sum(5, 7)
logging.info(f"Result is {result}")


В этом простом примере мы использовали logging.info() для записи информационных сообщений. Это как дневник вашего кода, в который вы вносите важную информацию.

Модуль logging поддерживает различные уровни логирования: DEBUG, INFO, WARNING, ERROR и CRITICAL. Каждый уровень соответствует своей важности. Например, DEBUG используется для мелочей, INFO – для общей информации, а ERROR – для записи ошибок.

Логирование позволяет не только следить за выполняемыми инструкциями, но и упростить отладку и поддержку кода. Представьте, что вы запустили программу, и на выходе получили неожиданную ошибку. Вместо того чтобы мучительно гадать, где произошел сбой, вы просто открываете лог-файл и находите там все необходимые улики.

import logging

logging.basicConfig(filename='app.log', level=logging.ERROR)

def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
logging.error("Tried to divide by zero")
return None
return result

divide(10, 0)


Здорово, правда? При возникновении ошибки мы записываем ее в файл app.log, и теперь у нас есть свидетельства о каждой неудавшейся операции.

Логирование – это также отличная возможность для документирования процесса разработки. В будущем, возможно, вам или вашим коллегам придется поддерживать проект. Наличие логов поможет быстро погрузиться в суть работы системы.

Важно помнить, что чрезмерное использование логирования может засорять ваши файлы ненужной информацией. Поэтому разумно выбирайте уровень детали для каждого этапа вашей программы.

Итак, подводя итог: логирование – это как ваш второй глаз, который всегда смотрит на то, что происходит в вашем коде. Оно помогает находить ошибки, улучшать производительность и поддерживать ваш проект в отличном состоянии. Так что вперед, добавляйте это мощное средство в свой арсенал программирования!
🔥2👍1
Советы по оптимизации и ускорению Python-программ
## Советы по оптимизации и ускорению Python-программ

Привет, дорогие читатели! Сегодня я расскажу вам, как сделать ваши Python-программы быстрее и эффективнее, не прилагая титанических усилий. Если вы новичок и чувствуете, что ваш код движется как черепаха, не переживайте, мы разгоняемся!

### Используйте встроенные функции

Одним из ваших лучших друзей в Python является его богатая библиотека встроенных функций. Они написаны на языке C и невероятно оптимизированы. Вместо того чтобы реализовывать свой счетчик элементов в списке, используйте len(). Нужен сумматор? Берите sum(). Простые улучшения, но какие результаты!

# Вместо этого:
count = 0
for i in my_list:
count += 1

# Лучше так:
count = len(my_list)


### Модуль collections

Для более сложных структур данных, таких как счета или очереди, используйте модуль collections. К примеру, deque из этого модуля обеспечивает более быструю вставку и удаление элементов, чем стандартный список.

from collections import deque

d = deque([1, 2, 3])
d.append(4) # Быстрее, чем list.append()
d.popleft() # Быстрее, чем list.pop(0)


### Листовые включения и генераторы

Списковые включения не только более "питоничны", но и работают быстрее, чем стандартные циклы. А если нужно обрабатывать большие данные, генераторы помогут вам сэкономить память.

# Списковое включение:
squares = [x**2 for x in range(10)]

# Генератор:
squares_gen = (x**2 for x in range(10))


### Следите за областями видимости

Локальные переменные обрабатываются быстрее, чем глобальные. Если можете, используйте локальные переменные и избегайте доступа к глобальным переменным в циклах.

### Модуль numpy

Когда дело касается математических операций и больших объёмов данных, модуль numpy - ваш путь. Он предлагает мощные инструменты для работы с многомерными массивами и матрицами.

import numpy as np

my_array = np.array([1, 2, 3])
my_array *= 2 # Элементы массива умножаются на 2


### Профилирование

Вам нужно понять, где у вас возникают замедления. Для этого используйте модуль cProfile, чтобы оценивать производительность. Это поможет локализовать узкие места в вашем коде.

import cProfile

def my_function():
# ваш код здесь

cProfile.run('my_function()')


### Заключение

Все эти приемы помогут ускорить ваш Python-код и сделать его более эффективным. Не бойтесь экспериментировать и искать оптимальные решения для ваших задач. Python – это не только про легкость написания кода, но и про его улучшение. Удачного программирования!
🔥3👍1