Программистика
Canal cerrado
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Mostrar más5 596
Suscriptores
-224 horas
+87 días
-8530 días
Archivo de publicaciones
5 595
Linux как секс!
Если зубрить его по книжкам, то кроме теории и деградации, ты ничему не научишься.
В канале BashDays ты найдешь лучшие Linux и Bash практики. Действующий девопс-инженер, самобытно и с долей юмора, травит темы:
- Рекавери файлов через grep
- Почему коты гадят в макбуки
- Как отключить логирование
- Неочевидные трюки на Bash
- Сниффер SSH на strace
И это только цветочки. А если заскучал, поиграй с друзьями в piu-piu и надери им бэкенд. Рекомендую!
В BashDays даже джуны становятся сеньорами.
Подписывайся, это самый простой способ прокачать свои хард-скиллы: — @bashdays
5 595
🖥Имеет ли смысл указывать slots при создании dataclass в python?
В комментариях под постом о атрибуте
slots, подписчик задал интересный вопрос:
а имеет ли смысл указывать slots при создании dataclass ?Так давайте же я вам сейчас расскажу об этом. Сразу скажу, что Да, использование slots при создании dataclass в Python может иметь смысл в определенных ситуациях. slots позволяет нам оптимизировать использование памяти и улучшить производительность, исключая динамическое создание атрибутов экземпляра и использование внутреннего словаря dict для хранения атрибутов. Преимущества использования slots с dataclass ⏺Снижение потребления памяти: Без slots каждый экземпляр класса имеет свой словарь (dict), который хранит все атрибуты экземпляра. Это добавляет накладные расходы на память. slots избавляется от необходимости использования этого словаря, что экономит память, особенно в случаях, когда создается много экземпляров класса. ⏺Ускорение доступа к атрибутам: Поскольку атрибуты экземпляра фиксированы, доступ к ним может быть быстрее, чем доступ к атрибутам через словарь. ⏺Предотвращение динамического добавления атрибутов: Использование slots предотвращает динамическое добавление новых атрибутов, что помогает предотвратить ошибки и улучшить читаемость и поддержку кода. 👩💻Вот пример, демонстрирующий, как можно использовать
slots с dataclass:
from dataclasses import dataclass
# Использование декоратора dataclass для автоматического создания методов __init__, __repr__, и других
@dataclass
class Point:
# __slots__ используется для ограничения атрибутов экземпляра и оптимизации использования памяти
__slots__ = ['x', 'y']
# Объявление атрибутов класса с их типами
x: int
y: int
# Пример использования класса Point
# Создание экземпляра класса Point с начальными значениями x=1 и y=2
point = Point(1, 2)
# Вывод значений атрибутов x и y экземпляра point
print(point.x, point.y
)
Когда не следуslotsзовать __slots__
Однако есть случаи, когда не стоит укslotsтрибут __slots__slotsass.
⏺__slots__ могут усложнить наследование. Если вы планируете использовать наследование, вам нужнslotsказать __slots__ в каждом подклассе.
⏺Вы не сможете добавлять атрибуты динамически, что иногда может быть полезно для отладки или для определенных паттернов проектирования.
Надеюсь я ответил на ваш вопрос, и вы удовлетворены! @programistica // #article
5 595
🖥 Библиотека Rich
Rich — это мощная библиотека для Python, которая позволяет легко и красиво выводить текст, таблицы, прогресс-бары, трассировки и другие элементы в консоль. Она поддерживает форматирование и стилизацию текста с использованием разметки, что делает консольный вывод более информативным и приятным для восприятия.
👩💻Пример кода, демонстрирующий работу библиотеки Rich:/
from rich.console import Console # Импортируем класс Console из библиотеки Rich для работы с консольным выводом
from rich.table import Table # Импортируем класс Table из библиотеки Rich для создания таблиц
console = Console() # Создаем объект Console для работы с консолью
# Создаем объект Table и задаем заголовок таблицы
table = Table(title="Пример таблицы с использованием Rich")
# Добавляем столбцы в таблицу
table.add_column("Имя", justify="right", style="cyan", no_wrap=True) # Первый столбец: Имя, выравнивание по правому краю, цвет cyan
table.add_column("Возраст", style="magenta") # Второй столбец: Возраст, цвет magenta
table.add_column("Город", justify="right", style="green") # Третий столбец: Город, выравнивание по правому краю, цвет green
# Добавляем строки в таблицу с данными
table.add_row("Алиса", "24", "Москва") # Первая строка: Алиса, 24, Москва
table.add_row("Боб", "30", "Санкт-Петербург") # Вторая строка: Боб, 30, Санкт-Петербург
table.add_row("Чарли", "22", "Новосибирск") # Третья строка: Чарли, 22, Новосибирск
# Выводим таблицу в консоль
console.print(table)
Этот код создает и выводит в консоль таблицу с форматированными данными.
@programistica // #Library5 595
💻 Вопрос из собеседования: Для чего в классе используется атрибут slots?
➡️Атрибут
__slots__ в классе Python используется для оптимизации памяти и ускорения работы с объектами класса. Он позволяет явно указать, какие атрибуты объекта будут использоваться, а какие нет.
👀Когда вы определяете класс, Python создает для каждого экземпляра этого класса словарь, который содержит все его атрибуты. Это может быть выгодным в том случае, если у вас много различных атрибутов, но может привести к большому расходу памяти, если вы создаете много экземпляров класса с небольшим количеством атрибутов.
👀Атрибут __slots__ позволяет определить, какие атрибуты должны быть на самом деле созданы для каждого экземпляра класса, и в какой момент их можно будет получить.
Если вы используете атрибут __slots__, Python уже не будет создавать словарь для каждого экземпляра класса, а будет использовать непосредственно массив атрибутов, что может ускорить работу программы и уменьшить использование памяти.
👩💻Например, если у вас есть класс Person с атрибутами name и age, вы можете определить __slots__ следующим образом:
class Person:
__slots__ = ['name', 'age']
def __init__(self, name, age):
self.name = name
self.age = age
‼️Таким образом, каждый экземпляр класса Person будет содержать только атрибуты name и age, и никакие другие атрибуты не будут созданы.
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥@programistica // #jobs
5 595
🖥 Жадные алгоритмы: Концепция, Примеры и Реализация на Python
Жадные алгоритмы (Greedy Algorithms) являются мощным инструментом в арсенале любого программиста. Они основаны на стратегии выбора локально оптимального решения на каждом шагу с целью получения глобально оптимального решения для всей задачи. В этой статье я расскажу о концепции жадных алгоритмов, разберем несколько классических задач и их решений, а также сравним жадные и оптимальные решения.
🗣Концепция жадных алгоритмов
🗣Примеры задач и их решений
🗣Сравнение жадных и оптимальных решений
🔗 Читать полностью
@programistica // #article
5 595
👀 Книга: Рецепты Python
⏺Обработка и форматирование строк
⏺Встроенные контейнеры данных
⏺Работа с последовательностями
⏺Итерируемые объекты и перебор
⏺Определение дружественных к пользователю функций
⏺Продвинутое использование функций
⏺Определение пользовательских классов
И многое другое
@programistica // #doc
5 595
🖥 Библиотека OpenCV
OpenCV (Open Source Computer Vision Library) - это библиотека компьютерного зрения с открытым исходным кодом, предназначенная для обработки изображений и видео. Она предоставляет широкий спектр функций, включая сегментацию изображений, распознавание объектов, отслеживание движения, а также возможности работы с камерами и потоками видео.
Вот простой пример использования библиотеки OpenCV для загрузки изображения, его отображения и выхода из окна при нажатии клавиши:
import cv2
# Загрузка изображения
image = cv2.imread('example_image.jpg')
# Проверка на успешную загрузку изображения
if image is None:
print('Ошибка: Не удалось загрузить изображение.')
else:
# Отображение изображения в окне
cv2.imshow('Image', image)
print('Изображение успешно загружено. Нажмите любую клавишу, чтобы закрыть окно.')
# Ожидание нажатия клавиши для выхода
cv2.waitKey(0)
# Закрытие окна
cv2.destroyAllWindows()
Для работы этого кода необходимо иметь изображение с названием 'example_image.jpg' в той же папке, где находится данный скрипт.
@programistica // #Library5 595
💻 Вопрос из собеседования: Как проверить
файл .py на синтаксические ошибки, не запуская его?
Утилита py_compile, позволит проверить файл .py на наличие синтаксических ошибок без его запуска.
👩💻Используется py_compile очевидно:
👀открываем командную строку/терминал.
👀переходим в каталог, содержащий файл .py, который вы хотите проверить
👀выполняем: python -m py_compile yourfile.py где yourfile.py - это имя файла, который вы хотите проверить.
Эта команда выполнит проверку файла и выведет описание любых синтаксических ошибок, которые были найдены, или пустой вывод, если ошибок нет.
‼️Когда это может быть полезно? Например, если код большой и в процессе задействует много ресурсов, а нужно всего лишь удостовериться в его валидности.
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥@programistica // #jobs
5 595
Меня просили объяснить, как работает этот код. Так что давайте приступим:
Буду стараться объяснять всё очень подробно, объясняя каждую маленькую деталь.
fibonacci_numbers = [0, 1] - Инициализируем список, состоящий из двух элементов 0 и 1.
Дальше у нас идёт строка while fibonacci_numbers[-1] + fibonacci_numbers[-2] < 1000:, разобьём её на несколько составных частей.
1. fibonacci_numbers[-1] берём из списка последний его элемент, который сперва будет равен 1.
(Python позволяет доставать элементы списка с конца - это делается с помощью "-" перед цифрой, указывающей индекс элемента массива, причём если вы указываете элемент списка с конца, то отсчёт идёт с единицы, а не с нуля, как это, обычно, делается)
2. fibonacci_numbers[-2] берём из списка предпоследний его элемент, который в первой итерации цикла будет равен нулю.
3. fibonacci_numbers[-1] + fibonacci_numbers[-2] сумма последнего и предпоследнего элементов списка.
4. fibonacci_numbers[-1] + fibonacci_numbers[-2] < 1000 задаём условие: сумма последнего и предпоследнего элементов списка меньше тысячи.
5. while fibonacci_numbers[-1] + fibonacci_numbers[-2] < 1000: создаём цикл, который трактуется так: Пока сумма сумма последнего и предпоследнего элементов списка меньше тысячи, выполняется условие:.
fibonacci_numbers.append(fibonacci_numbers[-1] + fibonacci_numbers[-2]) это и есть условие цикла, которое добавляет в список ещё один элемент, который является суммой последнего и предпоследнего элементов последней версии списка, и этот список будет дополнятся до того момента, пока сумма последнего и предпоследнего элементов последней версии списка не будет >1000, причём этот элемент, который является суммой последнего и предпоследнего элементов последней версии списка и который >1000, не добвляется в список.
sum_of_fibonacci = sum(fibonacci_numbers) - создаём переменную, которая берёт значения суммы всех элементов массива.
print(sum_of_fibonacci) - эта строка выводит число: 2583. Потому что это и есть сумма всех элементов массива, у которого сумма последнего и предпоследнего элемента <1000.
А если хотите узнать подробнее о работе этого алгоритма почитайте стать про числа Фибоначчи.
@programistica // #article5 595
🖥 Применение Python в автоматизации процессов DevOps
В мире разработки программного обеспечения DevOps становится все более популярным подходом, объединяющим разработку и операции для более быстрой и надежной поставки программного обеспечения. Python стал одним из ключевых инструментов в этой области благодаря своей гибкости, мощности и богатой экосистеме библиотек. В этой статье я расскажу, как Python используется в автоматизации процессов DevOps, включая управление инфраструктурой и CI/CD.
🗣Управление инфраструктурой с помощью Python
🗣Непрерывная интеграция и доставка (CI/CD) с использованием Python
🗣Пример скрипта на Python для управления инфраструктурой
🗣Пример скрипта на Python для CI/CD с использованием Jenkins API
🔗 Читать полностью
@programistica // #article
5 595
👀 Книга: Алгоритмы и структуры для массивных наборов данных
⏺Наброски на основе хеша
⏺Обзор хеш-таблиц и современного хеширования
⏺Приближенная принадлежность: блумовские и порционные фильтры
⏺Оценивание частоты и набросок count-min
⏺Оценивание кардинального числа и алгоритм HyperLogLog
⏺Потоковые данные: сведение всего воедино
⏺Формирование выборок из потоков данных
⏺Приближенные квантили на потоках данных
И многое другое
@programistica // #doc
5 595
💻 Вопрос из собеседования: Опишите принцип работы сборщика мусора в python.
👀Python использует автоматическое управление памятью, что означает, что разработчику не нужно явно выделять или освобождать память в своем коде. Вместо этого в Python есть встроенный сборщик мусора, который автоматически управляет памятью для объектов, на которые больше нет ссылок.
👀Сборщик мусора запускается периодически и ищет объекты, на которые больше не ссылается ни одна переменная в коде. Затем эти объекты идентифицируются как мусор и удаляются из памяти. Сборщик мусора работает, отслеживая ссылки на объекты в памяти, используя механизм подсчета ссылок. Каждый раз, когда создается новая ссылка на объект, счетчик ссылок для этого объекта увеличивается. Точно так же, когда ссылка удаляется, счетчик ссылок уменьшается.
👀Однако одного подсчета ссылок недостаточно для обработки всех случаев управления памятью. В некоторых случаях могут быть циклические ссылки, когда два или более объекта ссылаются друг на друга и больше не нужны. Для обработки этих случаев сборщик мусора Python использует вторичный механизм, называемый «обнаружение циклов». Этот механизм периодически ищет циклические ссылки среди объектов, и если они найдены, он знает, что нужно удалить циклическую ссылку и освободить память.
‼️В целом, сочетание подсчета ссылок и обнаружения циклов позволяет Python автоматически управлять памятью и обеспечивать очистку объектов, когда они больше не нужны. Это приводит к более эффективному использованию памяти и снижает риск нехватки памяти в приложениях, которые долго работают или интенсивно используют память.
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥@programistica // #jobs
5 595
🖥Создание криптовалютного кошелька с использованием Python и библиотеки Bitcoin
Криптовалютные кошельки являются неотъемлемой частью работы с криптовалютами, обеспечивая безопасное хранение и управление вашими цифровыми активами. В этой статье я расскажу, как создать простой криптовалютный кошелек с использованием языка программирования Python и библиотеки Bitcoin.
🗣Введение в криптовалютные кошельки
🗣Использование Python и библиотеки Bitcoin
🗣Создание простого криптовалютного кошелька
🔗 Читать полностью
@programistica // #article
5 595
👀 Книга: Python. Полное руководство
⏺ОСНОВЫ. ПЕРВАЯ ПРОГРАММА
⏺ПЕРЕМЕННЫЕ И ТИПЫ ДАННЫХ
⏺ОПЕРАТОРЫ
⏺ЦИКЛЫ И УСЛОВНЫЕ ОПЕРАТОРЫ
⏺МАТЕМАТИЧЕСКИЕ ФУНКЦИИ
⏺СТРОКИ И СТРОКОВЫЕ ФУНКЦИИ
⏺РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
⏺СПИСКИ
⏺КОРТЕЖИ
И многое другое
@programistica // #doc
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
