byteofpython | Unsorted

Telegram-канал byteofpython - 🐍 Укус питона 🐍

2965

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @it_dashka 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython

Subscribe to a channel

🐍 Укус питона 🐍

✈️Конструкция raise используется для генерации исключений. Когда в коде происходит что-то непредвиденное или некорректное — можно сгенерировать исключение командой raise.

➡️Основные моменты конструкции raise:
—Возбуждение существующих исключений: Вы можете использовать raise без каких-либо параметров в блоке except, чтобы повторно вызвать текущее исключение.
—Создание собственных исключений: Вы можете создать или вызвать собственное исключение, создав объект исключения и передав его в raise.

➡️Пример использования raise:

def divide(a, b):
if b == 0:
raise ValueError("Деление на ноль невозможно.")
return a / b

try:
result = divide(10, 0)
except ValueError as e:
print(f"Ошибка: {e}")

⬆️В этом примере функция divide вызывает исключение ValueError, если второй аргумент равен нулю. В блоке try мы пытаемся выполнить деление, и если возникает ошибка, мы перехватываем её и выводим сообщение об ошибке.

Читать полностью…

🐍 Укус питона 🐍

✈️Django ORM (Object-Relational Mapping) — это мощный инструмент, который позволяет разработчикам взаимодействовать с базой данных, используя объекты Python.

➡️Создание моделей

Одним из основных аспектов работы с Django ORM является создание моделей. Модель — это класс Python, который описывает структуру таблицы в базе данных. Django ORM автоматически создает таблицу в соответствии с заданной моделью. Модели могут включать поля, которые соответствуют столбцам таблицы, а также методы и связи с другими моделями. Определение модели в Django ORM интуитивно понятно и упрощает процесс разработки.

Вот пример создания модели в Django ORM:

from django.db import models

class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=5, decimal_places=2)
description = models.TextField()


➡️Запросы к базе данных

С помощью Django ORM можно выполнять различные типы запросов, включая выборку данных, фильтрацию, сортировку и агрегирование.

Вот несколько примеров основных команд для выполнения запросов в Django ORM:

# Выборка всех объектов модели
products = Product.objects.all()

# Фильтрация объектов по условию
cheap_products = Product.objects.filter(price__lt=10)

# Сортировка объектов
sorted_products = Product.objects.order_by('-price')

# Агрегирование данных
total_price = Product.objects.aggregate(Sum('price'))


➡️Миграции базы данных

Еще одно важное преимущество Django ORM — это автоматическое создание и применение миграций базы данных. Миграции позволяют легко изменять структуру базы данных, добавлять новые таблицы, поля или изменять существующие. Django ORM отслеживает изменения в моделях и генерирует миграционные файлы, которые можно применить к базе данных. Это значительно упрощает процесс разработки и поддержки приложения.

Читать полностью…

🐍 Укус питона 🐍

Почему Python востребован среди DevOps-инженеров?

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

👉 У Python понятный синтаксис, разрабатывать на нём быстро.
👉 В нём есть куча библиотек.
👉 Python отлично справляется с автоматизацией задач, работой с API, управлением инфраструктурой (например, через Ansible), а также с написанием скриптов для CI/CD пайплайнов и мониторинга.

Всё это делает его удобным для использования в сложных DevOps-проектах.

Узнать, насколько хорошо вы владеете Python, можно в нашем тесте. Переходите в бота и отвечайте на 5 вопросов🔗

#реклама
О рекламодателе
erid: LjN8KAkrn

Читать полностью…

🐍 Укус питона 🐍

Есть такой один интересный пакет JMESpath, который позволяет декларативно указать, как извлекать элементы из документа JSON.

➡️Основные примеры использования:

import jmespath

jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})
# output: 'baz'

jmespath.search('foo.*.name', {'foo': {'bar': {'name': 'one'}, 'baz':
{'name': 'two'}}})
# output: ['one', 'two']


Метод search принимает паттерн, по которому требуется извлечь данные, а также словарь (который в общем-то похож на JSON).

Читать полностью…

🐍 Укус питона 🐍

➡️NamedTuple

NamedTuple
- это подтип кортежа, который позволяет объявлять собственные именованные типы, которые могут использоваться в качестве структуры данных. Он предоставляет возможность определить тип данных с помощью именованных полей. Каждое поле имеет свой собственный тип данных. Это может быть полезно в случаях, когда вам нужно создать объекты с определенными свойствами.

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

from collections import namedtuple

Person = namedtuple('Person', ['name', 'age'])

person1 = Person(name='John', age=30)
person2 = Person(name='Jane', age=25)

print(person1.name) # John
print(person2.age) # 25

Читать полностью…

🐍 Укус питона 🐍

➡️"Чистая" функция - это функция, которая при выполнении одного и того же входного значения всегда возвращает одинаковый результат и не имеет побочных эффектов.

➡️Пример чистой функции

Давайте рассмотрим пример простой чистой функции на языке Python. Предположим, у нас есть функция double, которая удваивает переданное число:

def double(number):
return number * 2


⬆️Эта функция является "чистой", потому что она всегда возвращает удвоенное значение переданного числа и не имеет побочных эффектов.

➡️Пример нечистой функции

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

my_list = []

def add_to_list(value):
my_list.append(value)


⬆️Эта функция не является "чистой", потому что она изменяет состояние программы путем добавления значения в глобальный список my_list.

Читать полностью…

🐍 Укус питона 🐍

✈️Модуль timeit в Python используется для измерения времени выполнения вашего кода. У него есть как интерфейс командной строки, так и вызываемый интерфейс. Модуль выполнит оператор определенное количество раз (по умолчанию - один миллион) и затем вернет время, затраченное на выполнение. Вот простой пример:

import timeit
print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))


⬆️Этот код выполнит оператор "-".join(str(n) for n in range(100)) 10 000 раз и выведет затраченное на это время.

➡️Использование Timeit с функциями

Вы также можете использовать модуль timeit для измерения времени выполнения функций. Вот пример:

import timeit
def my_function():
return "-".join(str(n) for n in range(100))
print(timeit.timeit(my_function, number=10000))


⬆️В этом примере мы сначала определяем функцию с именем my_function. Затем мы измеряем время выполнения этой функции 10 000 раз и выводим результат

Читать полностью…

🐍 Укус питона 🐍

🎮Pyxel — это библиотека для создания ретро-игр на языке программирования Python. Она идеально подходит для разработчиков, которые хотят погрузиться в мир 8-битных игр, создавая собственные проекты с минимальными усилиями.

Почему Pyxel

➡️Простота использования


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

➡️Встроенные инструменты


Pyxel поставляется с набором встроенных инструментов, которые облегчают разработку игр. Среди них: редактор спрайтов, редактор звуков и редактор карт.

➡️Кроссплатформенность

Ещё одно важное преимущество Pyxel — это её кроссплатформенность. Библиотека поддерживает Windows, macOS и Linux, что позволяет разрабатывать игры на любой из этих платформ.

Читать полностью…

🐍 Укус питона 🐍

✈️itertools — Это удивительный инструмент, который помогает работать с итерациями (повторениями) в Python более эффективно.

➡️Основные функции itertools:

1. count(start, step): Генерирует бесконечную арифметическую прогрессию, начиная с start, с шагом step.

2. cycle(iterable): Бесконечно повторяет элементы из iterable.

3. chain(*iterables): Объединяет несколько итерируемых объектов в один последовательный поток.

4. zip_longest(*iterables, fillvalue=None):
Объединяет элементы из разных итерируемых объектов, даже если их длины различаются, то недостающее количество елментом заполнится заполнителем fillvalue.

➡️Пример использования:

import itertools

# Создаем бесконечную последовательность с шагом 2
counter = itertools.count(start=10, step=2)
for _ in range(5):
print(next(counter)) # Выведет числа: 10, 12, 14, 16, 18

# Объединяем несколько списков в один последовательный поток
letters = ['a', 'b', 'c']
numbers = [1, 2, 3]
combined = itertools.chain(letters, numbers)
print(list(combined)) # Выведет: ['a', 'b', 'c', 1, 2, 3]

Читать полностью…

🐍 Укус питона 🐍

Что такое Meta в классах Django?

Django использует метаклассы. А метаклассы — это классы, которые конструируют другие классы. Соответственно, когда Django конструирует наш класс, он делает это с помощью своего метакласса. Внутренний класс с названием Meta позволяет задать этому конструктору необходимые нам параметры.

🪅Например, мы можем перезаписать имя таблицы, используя db_table в классе Meta. А ещё изменить порядок полей нашей модели.

from django.db import models

class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)

class Meta:
db_table = 'product_table'
ordering = ['-created_at']

Читать полностью…

🐍 Укус питона 🐍

✈️В современном мире разработки программного обеспечения все больше и больше акцент делается на создании API (Application Programming Interface) для обмена данными между различными приложениями. Когда дело доходит до тестирования и отладки этих API, инструменты, такие как POSTMAN, становятся незаменимыми.

➡️Основные возможности POSTMAN

POSTMAN - это инструмент для тестирования и отладки API, который предоставляет разработчикам простой и удобный способ отправки HTTP-запросов и получения ответов. Он имеет интуитивно понятный пользовательский интерфейс, который позволяет легко создавать и отправлять запросы различных типов, таких как GET, POST, PUT и DELETE.

➡️POSTMAN также обладает возможностью автоматизации тестирования API. С помощью коллекций запросов и сценариев, вы можете создавать наборы тестовых сценариев и запускать их в автоматическом режиме. Это особенно полезно при разработке и поддержке сложных API, где необходимо проверить множество различных запросов и ответов.

Читать полностью…

🐍 Укус питона 🐍

➡️Описание функции help

Функция help в Python используется для получения справочной информации о встроенных функциях, методах, модулях, классах и объектах Python. Эта функция является очень полезным инструментом для изучения новых методов и библиотек, а также для получения помощи в решении проблем.

Чтобы использовать функцию help, просто вызовите ее и передайте объект, для которого вы хотите получить справочную информацию. Например, если вы хотите получить справочную информацию о функции print, вы можете вызвать функцию help следующим образом:

help(print)


Это приведет к выводу документации о функции print в вашем интерпретаторе Python.

Читать полностью…

🐍 Укус питона 🐍

💩 Какова разница между методами getattr и getattribute?

Оба этих метода являются магическими.

🔘getattr


class Missing:
attr = 42

def getattr(self, name):
print(f"In getattr, asked for {name}")
return 73

m = Missing()
print(m.attr) # 42
print(m.xyz) # In getattr, asked for xyz; 73

Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz.

🔘getattribute

class Always:
attr = 42

def getattribute(self, name):
print(f"In getattribute, asked for {name}")
return 73

a = Always()
print(a.attr) # In getattribute, asked for attr; 73
print(a.xyz) # In getattribute, asked for xyz; 73

Здесь же можно увидеть, что метод используется для обработки запросов всех атрибутов, как существующих (attr), так и несуществующих (xyz).

✅ Таким образом, getattribute — это метод, который управляет всеми запросами атрибутов, тогда как getattr вызывается, когда getattribute не находит атрибут.

Читать полностью…

🐍 Укус питона 🐍

🔎Объекты - это экземпляры классов, и классы являются шаблонами для создания объектов. Каждый объект имеет свои собственные атрибуты (переменные, данные) и методы (функции, действия), которые определяют его поведение и взаимодействие с другими объектами.

Например, если у нас есть класс "Автомобиль", мы можем создать несколько объектов этого класса, таких как "Машина1" и "Машина2". У каждого объекта будет свой набор атрибутов, таких как "марка", "модель" и методов, таких как "завести двигатель" или "передвинуться вперед".

➡️Преимущества использования объектов в Python

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

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

Читать полностью…

🐍 Укус питона 🐍

➡️Основы Unstructured

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

from unstructured import Text

text_data = Text.from_file('example.txt')
print(text_data.content)


⬆️Эти простые команды позволяют легко импортировать и работать с текстовыми данными.

➡️Обработка Текстовых Данных

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

from unstructured import Text

text_data = Text('Это пример текста для токенизации.')
tokens = text_data.tokenize()
print(tokens)


⬆️Этот код разобьёт текст на отдельные слова, что может быть полезно для дальнейшего анализа и обработки данных.

Читать полностью…

🐍 Укус питона 🐍

💩 Какова разница между методами getattr и getattribute?

Оба этих метода являются магическими.

🔘getattr


class Missing:
attr = 42

def getattr(self, name):
print(f"In getattr, asked for {name}")
return 73

m = Missing()
print(m.attr) # 42
print(m.xyz) # In getattr, asked for xyz; 73

Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz.

🔘getattribute

class Always:
attr = 42

def getattribute(self, name):
print(f"In getattribute, asked for {name}")
return 73

a = Always()
print(a.attr) # In getattribute, asked for attr; 73
print(a.xyz) # In getattribute, asked for xyz; 73

Здесь же можно увидеть, что метод используется для обработки запросов всех атрибутов, как существующих (attr), так и несуществующих (xyz).

✅ Таким образом, getattribute — это метод, который управляет всеми запросами атрибутов, тогда как getattr вызывается, когда getattribute не находит атрибут.

Читать полностью…

🐍 Укус питона 🐍

✈️Функция range() в Python - это важный инструмент для создания последовательности чисел. Хотя она часто используется в связке с циклом for, есть и другие способы, как можно использовать эту функцию.

➡️Использование range() в списковых включениях

Списковые включения - это мощный инструмент Python, который позволяет создавать списки в одну строку кода. Функция range() может быть использована в списковых включениях для создания списков, которые следуют определенной числовой последовательности. Например, [x for x in range(10)] создаст список чисел от 0 до 9.

➡️Использование range() в генераторах

Генераторы в Python - это специальный тип итераторов, который позволяет генерировать элементы "на лету", экономя память. Функцию range() можно использовать в генераторах для создания последовательностей чисел. Например, (x for x in range(10)) создаст генератор, который производит числа от 0 до 9.

🐍Pythoner

Читать полностью…

🐍 Укус питона 🐍

➡️Что такое importlib?

Это встроенная библиотека Python, которая предоставляет интерфейс для механизма импорта. С ее помощью вы можете программно импортировать модули, перезагружать их и даже создавать свои собственные импортеры!

➡️Вот простой пример использования importlib:

import importlib

# Динамический импорт модуля
math = importlib.import_module('math')

# Использование импортированного модуля
print(math.pi) # Выводит 3.141592653589793

# Перезагрузка модуля
importlib.reload(math)


➡️С importlib вы можете:
• Динамически импортировать модули
• Перезагружать модули во время выполнения
• Создавать пользовательские импортеры
• Работать с пространствами имен пакетов

🔎Эта библиотека особенно полезна при разработке плагинов, создании расширяемых приложений или отладке кода.

Читать полностью…

🐍 Укус питона 🐍

✈️В Django ORM можно использовать механизм миграций для изменения структуры базы данных без необходимости вручную вносить изменения через SQL запросы.

Миграции позволяют вам определять изменения в моделях и применять их к базе данных автоматически.


➡️Для начала работы с миграциями в Django необходимо создать начальное состояние базы данных, которое будет соответствовать текущим моделям вашего приложения.

➡️Затем, чтобы применить миграции к базе данных, можно воспользоваться командой python manage.py migrate, которая применит все необходимые изменения к базе данных. При этом Django будет автоматически отслеживать и применять новые миграции при изменениях в моделях.

➡️Миграции в Django ORM могут включать различные операции, такие как создание новых таблиц, добавление и удаление полей, изменение типа данных и многое другое. Кроме того, можно создавать собственные миграции с помощью команды python manage.py makemigrations --empty, чтобы определить свои собственные изменения в базе данных.

Читать полностью…

🐍 Укус питона 🐍

Хотите стать востребованным Python-разработчиком? Пройдите курс от Hexlet!

Начните с основ и за 10 месяцев освоите один из самых популярных языков для бэкенда, научитесь создавать полноценные сайты и веб-приложения и реализовать внутреннюю логику работы программ на фреймворке Django. 

🎁 🎃 Бонусы к Черной пятнице! Вас ждет специальное предложение - скидка до 81 000 ₽. на обучение и второй курс в подарок!

Вас ждут сотни упражнений, 4 проекта для портфолио на GitHub, а во время обучения вы также поучаствуете в Карьерном треке чтобы найти свою первую работу в IT.

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

Читать полностью…

🐍 Укус питона 🐍

Message_effect_id - это идентификатор, используемый в Telegram Bot API для определения конкретного визуального эффекта, который можно применить к сообщению.

➡️Основные характеристики message_effect_id:

Уникальность: Каждый эффект имеет свой уникальный числовой идентификатор.Формат: Идентификаторы представлены в виде строк, содержащих длинные числовые значения.Связь с эмодзи: Каждый message_effect_id соответствует определенному эмодзи, которое визуально представляет эффект.

➡️Примеры message_effect_id:

{
'🔥': "5104841245755180586",
'👍': "5107584321108051014",
'👎': "5104858069142078462",
'❤️': "5044134455711629726",
'🎉': "5046509860389126442",
'💩': "5046589136895476101"
}


➡️Использование в Telegram Bot API:

Применение эффектов: Боты могут использовать эти идентификаторы для добавления анимированных реакций к сообщениям.Интерактивность: Позволяет создавать более динамичные и интерактивные взаимодействия в чатах

Читать полностью…

🐍 Укус питона 🐍

✈️Метод subclasshook используется для определения, является ли один класс подклассом другого. Он вызывается при проверке isinstance() и issubclass() для определения отношения наследования между классами.

⬆️Этот метод позволяет настроить поведение этих функций для пользовательских классов.

➡️Пример:

class A:
def init(self, value):
self.value = value

class B:
def init(self, value):
self.value = value

def subclasshook(cls, subclass):
return (hasattr(subclass, 'value') and
callable(subclass.value) and
subclacc.value.name == 'print_value')

class C:
def init(self, value):
self.value = value

def print_value(self):
print(self.value)

a = A(5)
b = B(10)
c = C(15)

# Проверка
print(issubclass(C, B)) # True
print(issubclass(A, B)) # False


⬆️В примере метод subclasshook класса B проверяет, есть ли у подкласса метод print_value. Если да, то возвращает True, что позволяет считать его подклассом B.

Читать полностью…

🐍 Укус питона 🐍

🖥 В чем разница между итератором и генератором?

В
Python и итераторы, и генераторы позволяют перебирать элементы коллекций, но работают немного по-разному.

🔘Итераторы — это объекты, которые реализуют методы iter() и next(). Метод iter() возвращает сам итератор, а next() — следующий элемент коллекции. Если элементы заканчиваются, next() должен вызвать исключение StopIteration. Итераторы позволяют явно перебирать элементы коллекции, не требуя, чтобы все элементы были доступны в памяти одновременно.

🔘Генераторы — это специальный способ реализации итераторов. Они создаются при помощи функций с ключевым словом yield. Главное отличие генератора заключается в том, что значения генерируются по требованию. Каждый раз, когда генератор достигает yield, он возвращает значение и «замирает», сохраняя своё состояние до следующего вызова. Это позволяет использовать меньше памяти при итерации по длинным последовательностям.

Читать полностью…

🐍 Укус питона 🐍

➡️GeoPy — это популярная библиотека в языке программирования Python, которая используется для выполнения различных геокодинговых операций. Она позволяет разработчикам легко преобразовывать адреса в географические координаты (широта и долгота) и обратно

➡️Геокодирование и обратное геокодирование

Одна из основных функций библиотеки GeoPy — это геокодирование. Геокодирование позволяет преобразовывать текстовые адреса в географические координаты. Это может быть полезно для создания карт, отслеживания местоположения или анализа данных, связанных с конкретными локациями.

➡️Расчет расстояний и маршрутов

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

Читать полностью…

🐍 Укус питона 🐍

Погрузитесь в мир Python с нашим бесплатным курсом!

🎓 Включено 45 уроков, 56 упражнений в тренажере и 163 проверочных теста. Узнаете, как создавать программы, работать с условиями и функциями.

Что вы освоите:
— Составление программ из нескольких модулей.
— Анализ ошибок в коде с использованием отладочной печати.

📚 Курс охватывает основы Python: синтаксис, условия, циклы, типы данных и библиотеки. Практика на каждом шаге поможет вам уверенно использовать язык.

Начните свое обучение с бесплатного базового курса Python и вы сможете создавать несложные программы, а так же анализировать ошибки в коде!

Читать полностью…

🐍 Укус питона 🐍

🖥 В чем разница между итератором и генератором?

В
Python и итераторы, и генераторы позволяют перебирать элементы коллекций, но работают немного по-разному.

🔘Итераторы — это объекты, которые реализуют методы iter() и next(). Метод iter() возвращает сам итератор, а next() — следующий элемент коллекции. Если элементы заканчиваются, next() должен вызвать исключение StopIteration. Итераторы позволяют явно перебирать элементы коллекции, не требуя, чтобы все элементы были доступны в памяти одновременно.

🔘Генераторы — это специальный способ реализации итераторов. Они создаются при помощи функций с ключевым словом yield. Главное отличие генератора заключается в том, что значения генерируются по требованию. Каждый раз, когда генератор достигает yield, он возвращает значение и «замирает», сохраняя своё состояние до следующего вызова. Это позволяет использовать меньше памяти при итерации по длинным последовательностям.

Читать полностью…

🐍 Укус питона 🐍

🔎LoginManager - это класс во Flask, который обрабатывает аутентификацию пользователей. Он предоставляет возможность работы с аутентификацией: проверка правильности введенных учетных данных, установка и удаление сеансов пользователя, проверка доступа к защищенным страницам.

➡️Использование LoginManager

Сначала необходимо создать экземпляр LoginManager и привязать его к приложению Flask. Затем можно определить функцию загрузки пользователя с помощью декоратора @login_manager.user_loader. Эта функция должна принимать идентификатор пользователя в качестве параметра и возвращать объект пользователя.

После настройки LoginManager можно использовать его для защиты определенных страниц и контролировать доступ к ним только для аутентифицированных пользователей. Для этого можно использовать декоратор @login_required, который применяется к функции представления и автоматически проверяет статус аутентификации пользователя перед выполнением функции.

Читать полностью…

🐍 Укус питона 🐍

🕔Один из самых простых способов измерения времени выполнения кода в Python – использование модуля time. Этот модуль предоставляет функцию time(), которая возвращает текущее время в секундах с момента начала эпохи. Вы можете использовать эту функцию до и после куска кода, скорость выполнения которого вы хотите измерить, а затем вычесть одно значение из другого, чтобы получить общее время выполнения.

➡️Пример использования модуля time:

import time

start_time = time.time()

# Код, скорость выполнения которого вы хотите измерить
for i in range(0, 10000):
pass

end_time = time.time()

execution_time = end_time - start_time
print(f"Время выполнения: {execution_time} секунд")

Читать полностью…

🐍 Укус питона 🐍

Библиотека PIL (Python Imaging Library) является одной из самых популярных библиотек для обработки изображений.

➡️Создание и редактирование изображений

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

➡️Обработка изображений в пакетном режиме

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

Читать полностью…

🐍 Укус питона 🐍

Что такое логирование?

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

➡️Преимущества логирования

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

➡️Как использовать логирование?

- Можно использовать встроенные средства ОС или специализированные инструменты для логирования.

- внедрять функции логирования непосредственно в свои приложения.

В любом случае, важно помнить о необходимости разделять логи по уровням важности и обеспечивать их надлежащее хранение и архивацию.

Читать полностью…
Subscribe to a channel