2619
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @it_dashka 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython
Message_effect_id - это идентификатор, используемый в Telegram Bot API для определения конкретного визуального эффекта, который можно применить к сообщению.
➡️Основные характеристики message_effect_id:
Уникальность: Каждый эффект имеет свой уникальный числовой идентификатор.Формат: Идентификаторы представлены в виде строк, содержащих длинные числовые значения.Связь с эмодзи: Каждый message_effect_id соответствует определенному эмодзи, которое визуально представляет эффект.
➡️Примеры message_effect_id:
{
'🔥': "5104841245755180586",
'👍': "5107584321108051014",
'👎': "5104858069142078462",
'❤️': "5044134455711629726",
'🎉': "5046509860389126442",
'💩': "5046589136895476101"
}
✈️Метод 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 также предоставляет возможность обработки изображений в пакетном режиме. Это означает, что можно применять определенные операции к нескольким изображениям одновременно. Например, можно изменить размер и применить фильтр ко множеству изображений, что сэкономит время и упростит процесс обработки большого количества изображений.
Что такое логирование?
Логирование – это процесс записи событий в системе. Эти события могут включать в себя всё: от информации о том, что программа успешно завершила свою работу, до деталей о возникших ошибках. Логи могут быть сохранены в различных форматах и на различных носителях, включая файлы, базы данных или даже удаленные серверы.
➡️Преимущества логирования
Оно помогает разработчикам отслеживать и исправлять ошибки, анализировать поведение системы и даже предотвращать возможные проблемы в будущем. Кроме того, логи могут быть использованы для аудита, что особенно важно для обеспечения безопасности системы.
➡️Как использовать логирование?
- Можно использовать встроенные средства ОС или специализированные инструменты для логирования.
- внедрять функции логирования непосредственно в свои приложения.
В любом случае, важно помнить о необходимости разделять логи по уровням важности и обеспечивать их надлежащее хранение и архивацию.
✈️Метод 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 имеет встроенный модуль zipfile, который предоставляет функционал для работы с архивами ZIP. Давайте создадим простой пример, чтобы продемонстрировать его возможности:
import zipfile
# Создаем новый ZIP файл
with zipfile.ZipFile('новый_архив.zip', 'w') as new_zip:
# Добавляем файлы в архив
new_zip.write('file1.txt')
new_zip.write('file2.txt')
# Можно добавить еще файлы по мере необходимости
zipfile обладает широкими возможностями, позволяя извлекать файлы, читать содержимое архива, добавлять и удалять файлы, а также многое другое. Это удобный инструмент, который позволяет манипулировать архивами непосредственно из кода Python.Если вам интересно узнать больше о модуле zipfile или экспериментировать с архивами в Python, рекомендую обратиться к официальной документации Python.
Читать полностью…
➡️Что такое importlib?
Это встроенная библиотека Python, которая предоставляет интерфейс для механизма импорта. С ее помощью вы можете программно импортировать модули, перезагружать их и даже создавать свои собственные импортеры!
➡️Вот простой пример использования importlib:
import importlib
# Динамический импорт модуля
math = importlib.import_module('math')
# Использование импортированного модуля
print(math.pi) # Выводит 3.141592653589793
# Перезагрузка модуля
importlib.reload(math)
➡️Использование библиотеки Selenium
Первый шаг в создании автообновления страницы - использование библиотеки Selenium. Selenium - это набор инструментов для автоматизации веб-браузеров. Он позволяет Python взаимодействовать с браузером, как если бы это делал человек. С помощью Selenium мы можем открыть веб-страницу и обновить ее.
➡️Пример кода:
from selenium import webdriver
driver = webdriver.Firefox() # или любой другой браузер
driver.get('<http://www.example.com>')
import timeЧитать полностью…
while True:
driver.refresh() # обновляем страницу
time.sleep(10) # ждем 10 секунд
🔥Pyrogram (в простонародье "Пирог") — это мощная библиотека для создания так называемых User Ботов для телеграмма.
🤖ЮзерБоты - это скрипты которые работают от лица личного аккаунта и могут выполнять все тоже что и человек.
➡️Например, можно запрограммировать автоответчик, который будет автоматически отвечать на определенные сообщения.
➡️Но в основном ЮзерБоты используют как дополнения к телеграму, например, встроенный калькулятор. Вы скорее всего уже видели их. Кто-то пишет комманду, скажем, .calc 2+2, а скрипт все считает и изменяя сообщение, выводит ответ.
✈️Модуль 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 раз и выведет затраченное на это время.import timeit
def my_function():
return "-".join(str(n) for n in range(100))
print(timeit.timeit(my_function, number=10000))
🎮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
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
getattribute — это метод, который управляет всеми запросами атрибутов, тогда как getattr вызывается, когда getattribute не находит атрибут.
Читать полностью…
🔎Объекты - это экземпляры классов, и классы являются шаблонами для создания объектов. Каждый объект имеет свои собственные атрибуты (переменные, данные) и методы (функции, действия), которые определяют его поведение и взаимодействие с другими объектами.
Например, если у нас есть класс "Автомобиль", мы можем создать несколько объектов этого класса, таких как "Машина1" и "Машина2". У каждого объекта будет свой набор атрибутов, таких как "марка", "модель" и методов, таких как "завести двигатель" или "передвинуться вперед".
➡️Преимущества использования объектов в Python
Во-первых, объектно-ориентированное программирование облегчает структурирование кода и делает его более логичным и понятным. Каждый объект отвечает за свои собственные данные и методы.
Во-вторых, объекты позволяют создавать сложные структуры данных и абстракции. Мы можем создавать классы, которые представляют реальные или воображаемые объекты, и определять, их взаимодействие друг с другом.
➡️Основы Unstructured
Библиотека предоставляет удобные методы для работы с различными типами данных. Например, для чтения текста из файла можно использовать следующий код:
from unstructured import Text
text_data = Text.from_file('example.txt')
print(text_data.content)
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
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
getattribute — это метод, который управляет всеми запросами атрибутов, тогда как getattr вызывается, когда getattribute не находит атрибут.
Читать полностью…
Прокачай свои скилы с Алексеем Рыбаком! 🚀
Надоели скучные задачи по программированию? 💻
Время перейти на новый уровень!
🎖Приглашаем бекендеров и инженеров инфраструктуры на уникальный трехмесячный курс по системному дизайну и архитектуре высоконагруженных систем от Алексея Рыбака, главы разработки Bumble/Badoo с 20-летним опытом в highload проектировании.
В чем ценность этого курса?
✅ Огненная практика с первых дней обучения на реальных кейсах и собственной инфраструктуре
✅ Погружение «под капот» хайлоад систем, изучение паттернов и приемов масштабирования
✅ Топовые фишки и знания по архитектуре проектов и системному дизайну больших проектов (1-100M DAU)
✅ Живые сессии, брейнштормы, проектирование “у доски”
На выходе у вас появится опыт:
✅ Проектирования сложных систем
✅ Нагрузочного тестирования своей инфраструктуры (выжмете 100К запросов)
✅ Планирования ресурсов для проектов с большим количеством пользователей
✅ Масштабирования IT-проектов
✅ Практический опыт работы с кластерами Redis, CockroachDB и шардированными PostgreSQL/MySQL
✅ И многое другое!
➡️ Регистрируйся и погружайся в нескучный хайлоад
Реклама ИП Рыбак А. А. ИНН 771407709607
💩 Какова разница между методами 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
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
getattribute — это метод, который управляет всеми запросами атрибутов, тогда как getattr вызывается, когда getattribute не находит атрибут.
Читать полностью…
Зачем нужно ключевое слово async в Python?
Ключевое слово async в Python используется для создания асинхронных функций (или корутин), которые позволяют выполнять задачи, не блокируя основной поток выполнения программы. Это особенно полезно для работы с такими операциями, как сетевые запросы, взаимодействие с базами данных или чтение/запись файлов.
Вот пример асинхронной функции:
import asyncio
async def fetch_data():
print("Fetching data...")
await asyncio.sleep(2) # симуляция длительной операции
print("Data fetched")
return "Data"
async def main():
result = await fetch_data()
print(result)
# запуск асинхронной функции
asyncio.run(main())
Interactive Radio Button Animation — перемещение точки при выборе одного из вариантов. Реализована с помощью CSS и JavaScript
Читать полностью…
▎Понимание функции Keyboard.add_hotkey
Функция keyboard.add_hotkey() в Python позволяет назначить определенную функцию на сочетание клавиш, известное как горячая клавиша. Она принимает два основных аргумента: комбинацию клавиш и функцию, которая будет выполнена при нажатии этой комбинации. Синтаксис выглядит следующим образом: keyboard.add_hotkey(hotkey, callback, args=(), suppress=False, timeout=3, trigger_on_release=False). Горячая клавиша может состоять из одной клавиши, комбинации клавиш или даже последовательности нажатий.
▎Примеры использования Keyboard.add_hotkey
Функция keyboard.add_hotkey() очень полезна для автоматизации задач и повышения интерактивности ваших скриптов на Python. Например, ее можно использовать для создания простого кейлоггера, автоматизации создания скриншотов или назначения пользовательских ярлыков для определенных действий в вашем приложении на Python. Важно помнить о необходимости ответственного и этичного использования этой функции, учитывая возможные злоупотребления.
▎Практические примеры применения Keyboard.add_hotkey
Рассмотрим пример, в котором мы хотим вывести "Привет, Мир!" при нажатии сочетания клавиш 'Ctrl + H'. Сначала необходимо импортировать модуль keyboard. Если он не установлен, вы можете установить его с помощью pip. Затем определяем нашу функцию и добавляем горячую клавишу следующим образом:
import keyboardЧитать полностью…
def hello_world():
print("Привет, Мир!")
keyboard.add_hotkey('ctrl + h', hello_world)
keyboard.wait()