zen_of_python | Unsorted

Telegram-канал zen_of_python - Zen of Python

20687

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Subscribe to a channel

Zen of Python

Интересно, гуру чего он в итоге стал спустя 8 лет

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

Zen of Python

Сколько времени нужно, чтобы освоить Python?

Согласно исследованию «Factors Affecting Students' Attitudes toward Computer Programming», проведённому в 2019 году в Vilnius University, освоение поделили на три стадии:

1. Базовое понимание. С постоянными усилиями и структурированным планом обучения вы можете приобрести базовое понимание синтаксиса Python и основных концепций в течение 3-4 недель. В этом этапе обычно изучаются переменные, типы данных, условные операторы, циклы, функции.

2. Средняя компетенция. Эта стадия наступает обычно спустя шесть месяцев. Здесь вы становитесь знакомы с более продвинутыми темами, такими как работа с файлами, обработка исключений, модули, библиотеки и работа с внешними источниками данных.

3. Продвинутые навыки могут занять несколько лет работы над реальными проектами. На этом этапе вы углубляетесь в конкретные области, такие как веб-разработка, анализ данных, научные вычисления, машинное обучение или другие специализированные области. Это тоже требует практики.

А на каком этапе вы?

❤️ — в самом начале пути
🤯 — второй этап, инфа сотка
🗿 — я в своём сознании настолько преисполнился, что мне этот Python абсолютно понятен


#советы

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

Zen of Python

Пора перестать использовать Python 3.8

По состоянию на сентябрь 2024, около 14% пакетов, загруженных из PyPI, были для Python 3.8. А это примерно 250 миллионов пакетов в день.

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

https://pythonspeed.com/articles/stop-using-python-3.8/

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

Zen of Python

Создание фуллстек-приложения с помощью Django, Vue.js и Flowbite

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

В этом руководстве вы увидите, как настроить эти инструменты и создать с помощью них первый проект:

https://chesda.hashnode.dev/django-vue-flowbite

#django #vue #веб

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

Zen of Python

Разбор паттерна Singleton в Python

Singleton (Одиночка) — это шаблон предоставления глобального доступа к состоянию, который гарантирует, что объект всегда будет один и тот же. Это один из первых паттернов, которые изучают разработчики.

В этом видео вы сможете разобраться в том, как именно он работает и для чего нужен. А также узнаете о Monostate.

#паттерны #singleton #видео

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

Zen of Python

Большой каталог шпаргалок на все случаи жизни

Ловите репозиторий, где собраны более 30 шпаргалок на разные темы. Здесь найдут подсказки сетевики, фронтендеры, бэкендеры, линуксоиды и пользователи windows.

Если вам чего-то не хватило, то вы можете предложить свою шпаргалку в качестве контрибьютора.

#шпаргалки

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

Zen of Python

Click — удобный инструмент для создания CLI на Python

Если вам нужно создать интерфейс командной строки для вашего проекта, то этот пакет позволит сделать это максимально просто.

Инструмент бесплатный и с отличной документацией: https://click.palletsprojects.com/en/8.1.x/

#инструменты #библиотека #cli

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

Zen of Python

256 попугаев дней с начала года прошли!

А это значит, что наступил День программиста! Мы с друзьями приготовили для вас небольшой сюрприз. Переходите по ссылке и трясите коробку, чтобы забрать его: https://tprg.ru/aKie

Делитесь в комментариях, что вам выпало.

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

Zen of Python

Вы всё ещё логируете через f-string? Тогда мы идём к вам

В этом видео вы узнаете об основной особенности логирования в Python, связанной с рендером строк. Вы изучите основные особенности стандартной Python библиотеки logging и получите «best practices» промышленного логирования.

После такого f-string, конечно, останутся в вашем арсенале. Но вот захотите ли вы их использовать также часто, как раньше?

#видео #основы #bestpractices

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

Zen of Python

Простыми словами: B-дерево

В прошлом посте я рассказывал про бинарное дерево поиска. Теперь давайте разберём ещё одну популярную структуру данных.

B-дерево (B-tree) — это самобалансирующаяся структура данных, которая хранит данные в отсортированном виде, позволяя эффективно выполнять операции поиска, вставки и удаления. B-деревья часто используются в системах хранения данных, таких как базы данных и файловые системы, благодаря своей способности справляться с большими объемами данных и минимизировать количество операций чтения/записи на диске.

Структура B-дерева выглядит следующим образом:

1. Корень дерева: он содержит указатели на свои дочерние узлы.
2. Внутренние узлы: эти узлы содержат ключи и указатели на другие узлы дерева.
3. Листовые узлы: узлы на самом нижнем уровне дерева, которые содержат сами данные или указывают на них.

//пример бинарного дерева

[10, 20]
/ | \
[1, 2, 5] [15, 18] [25, 30, 35]


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

Как я уже сказал, B-tree похожа на BST, но имеет ряд ключевых отличий:

Количество ключей в узле:
BST: Каждый узел содержит только один ключ и два дочерних узла (левого и правого).
B-tree: Каждый узел может содержать несколько ключей и производить разветвление на большее количество дочерних узлов (определяется порядком дерева).

Балансировка:
BST: Может стать несбалансированным, что приводит к увеличению высоты дерева и замедляет операции поиска.
B-tree: Остается сбалансированным благодаря встроенному механизму балансировки при вставке и удалении элементов.

Высота дерева:
BST: Может быть оправдано большой, так как каждый узел содержит только один ключ.
B-tree: Значительно меньше и площе, благодаря множеству ключей в одном узле.

Производительность при работе с большими данными:
BST: Из-за потенциально большой высоты дерева может потребоваться множество операций для поиска элемента.
B-tree: Более плоская структура минимизирует количество операций ввода-вывода, что особенно полезно при работе с внешней памятью и большими объемами данных.

В связи с этим можно выделить следующие преимущества B-дерева:
1. Более оптимизированное хранение больших объемов данных.
2. Автоматическая балансировка.
3. Эффективный доступ к данным благодаря низкой высоте дерева и множеству ключей в узлах.

Но где же применяется такая структура данных? Вот несколько примеров:

1. Базы данных. B-деревья широко используются в реляционных базах данных (MySQL, PostgreSQL) для реализации индексов, что позволяет эффективно выполнять операции поиска, вставки и удаления данных.
2. Файловые системы. Файловые системы, такие как NTFS и ext4, используют B-деревья для организации и управления файлами на диске, обеспечивая быструю навигацию и доступ.
Кэширование данных : Используются для быстрого доступа к часто запрашиваемым данным, улучшая производительность приложений.

Теперь вы знаете о ещё одном способе хранения данных. Какой вам кажется более удобным?

#простымисловами #структураданных #btree

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

Zen of Python

Toolfolio — все нужные инструменты для ИИ и не только в одном месте

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

#инструменты

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

Zen of Python

Простой Python-скрипт + ИИ = оптимизация ваших рабочих процессов

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

«Галя, у нас отмена» — и можно начинать курсач с чистого листа. Попробуете?

#гайд #ии #интересное

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

Zen of Python

Давайте проверим ваши знания работы бинарного дерева поиска. Посмотрите на изображение и ответьте на вопрос ниже.

#викторина #bst

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

Zen of Python

встречайте — Bython!

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

Если вам по каким-то причинам это надо, то ищите проект здесь.

@your_tech

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

Zen of Python

Telegram Mini App. Как создать Web App с нуля

Mini Apps (или же Web Apps) — это относительно новый и удобный способ добавления веб приложения прямо в интерфейсе Telegram. Сегодня, когда в мессенджере появился свой магазин приложений, это стало особоенно актуально.

Особенность Mini Apps заключается в том, что они поддерживают авторизацию, платежи одной кнопкой и возможность работать с данными пользователя, открывшего мини-приложение.

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

https://habr.com/ru/companies/amvera/articles/838180/

#бот #telegram #web

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

Zen of Python

Работа с JSON и XML в Python: парсинг, генерация и валидация

JSON и XML — это форматы для хранения информации. Их используют для обмена данными в веб-разработке между клиентом и сервером, поэтому они часто встречаются при работе с API.

В этой статье мы расскажем, как взаимодействовать с ними при работе с Python.

#api

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

Zen of Python

Плохие практики ООП в Python, которых нужно избегать

В этом видео рассматриваются распространенные ошибках в ООП на Python, которые часто совершают разработчики. Вы узнаете:

— как сохранить ваш код чистым и удобным для сопровождения;
— почему вам следует заменять ненужные классы функциями;
— зачем использовать модули вместо классов только со статическими методами;
— и как сглаживать глубокие иерархии наследования.

#видео #ооп

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

Zen of Python

Тут что-то на эльфийском

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

Zen of Python

Простыми словами: Структуры данных в Python

Мы немного забежали вперёд и уже разобрали две популярных структуры данных — BST и B-Tree. Но давайте немного откатимся назад и кратко разберём какие вообще структуры данных используются в Python помимо деревьев и чем они отличаются.

1. Списки (Lists)
Списки — это упорядоченные изменяемые коллекции, которые могут содержать элементы любого типа. Они поддерживают произвольный доступ по индексу и предоставляют множество встроенных методов для манипуляции элементами.

my_list = [1, 2, 3, "hello", 4.5]


2. Кортежи (Tuples)
Кортежи — это упорядоченные неизменяемые коллекции. После создания их элементы нельзя изменить. Кортежи полезны для хранения объектов, которые не должны изменяться в ходе выполнения программы.

my_tuple = (1, 2, 3, "hello", 4.5)


3. Словари (Dictionaries)
Словари — это неупорядоченные коллекции пар ключ-значение. Они позволяют быстро находить значение по ключу и часто используются для представления разреженных данных или объектов с именованными полями.

my_dict = {"name": "Alice", "age": 25, "city": "New York"}


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

my_set = {1, 2, 3, 4, 5}


5. Очереди (Queues)
Очереди обеспечивают порядок очередности элементов «первым пришел — первым вышел» (FIFO). В Python можно использовать модуль collections.deque для эффективного выполнения операций на концах очереди.

from collections import deque
my_queue = deque([1, 2, 3, 4, 5])
my_queue.append(6)
my_queue.popleft()


6. Стек (Stacks)
Стек обеспечивает порядок «последним пришел — первым вышел» (LIFO). В Python стек можно реализовать с помощью списка, используя методы append() и pop().

my_stack = [1, 2, 3, 4, 5]
my_stack.append(6)
my_stack.pop()


7. Двусвязные списки (Linked Lists)
Двусвязные списки состоят из узлов, каждый из которых содержит значение и ссылки на следующий и предыдущий узлы. Они обеспечивают эффективное добавление и удаление элементов, но требуют больше памяти, чем массивы.

class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None

class DoublyLinkedList:
def __init__(self):
self.head = None


8. Деревья (Trees)
Деревья используются для представления иерархических данных. Один из популярных видов деревьев — бинарное дерево поиска (BST), где каждый узел имеет не более двух детей, а левое поддерево содержит значения меньше родительского узла, правое — больше.

class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None


9. Графы (Graphs)
Графы состоят из узлов и ребер, связывающих их. Они используются для представления сетевых структур, таких как социальные сети, маршруты в транспорте и т.д. В Python графы можно реализовать с помощью словарей или использовать библиотеки, такие как NetworkX.

# Пример простого графа с использованием словаря
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}


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

Про что ещё рассказать в рубрике простыми словами или какую тему разобрать подробнее? Напишите в комментарии

#простымисловами #структурыданных

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

Zen of Python

Old but gold: Два простых способа преобразовать файл Python в EXE-файл

Если вы написали программу и хотите, чтобы ею могли пользоваться не только разработчики, но и простые пользователи, то стоит оформить её в удобном формате — сделать интерфейс и преобразовать файлы .exe, чтобы программу было удобно установить. Вот именно о последнем и пойдёт речь в этой статье.

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

https://www.datacamp.com/tutorial/two-simple-methods-to-convert-a-python-file-to-an-exe-file

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

Zen of Python

«Если сотрудник начал проситься в отпуск, то проще уже усыпить и завести нового»

Взято из флудильни

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

Zen of Python

Мини-гайд по отправке сообщений из Google Таблицы или базы данных с Python

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

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

Zen of Python

Вышла Visual Studio Code 1.93

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

Подробнее о нововведениях в нашей статье.

#новости #vscode

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

Zen of Python

Гайд по обработке данных с помощью Pandas

Отличное руководство для новичков и тех, кто постоянно работает с Pandas. В статье досконально описаны стандартные методы фильтрации, объединения, приведения типов и другие операции, но даже для гуру найдётся пара новых приёмов. Вау-эффект гарантирован.

#гайд #pandas

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

Zen of Python

Берите на заметку — лучший алгоритм для устранения багов

#кек

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

Zen of Python

Как оптимизации в CPython повлияли на скорость работы Python

Автор твита на картинке заметил странное поведение Python. Когда он вызывал встроенную функцию min, производительность кода была ниже, чем если реализованный метод в самом коде.

Да, его код был написан ещё на Python 2. Сейчас ситуация стала гораздо лучше. Но почему? Автор этой статьи провёл несколько бенчмарков и поделился выводами:

https://habr.com/ru/companies/beget/articles/839348/

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

Zen of Python

Головоломка «Сапёр» на Python в 66 строк и её решение вероятностным алгоритмом

Автор статьи поставил себе задачу написать менее чем за 100 строк полноценную игру «сапёр». У него получилось уложиться в 66 строк, сделав игру, которая работает в консоли.

Посмотреть на реализацию можно в статье: https://habr.com/ru/articles/833494/

#gamedev

Смогли бы написать ещё короче?

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

Zen of Python

Как упростить работу с числами в Python

Небольшой совет, как сделать числа более читаемыми.

#видео

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

Zen of Python

Простыми словами: Бинарное дерево поиска

Бинарное дерево поиска (Binary Search Tree, или просто BST) — это структура данных, которая помогает легко и быстро находить, добавлять и удалять элементы. Давайте разберёмся, что это такое и как с ним работать, на простых примерах.

Представьте себе дерево. У каждого узла в этом дереве есть:
— значение (например, число);
— ссылка на левую «веточку» (левого ребенка);
— ссылка на правую «веточку» (правого ребенка).

Правило у этого дерева такое:
— все значения в левом поддереве меньше, чем значение в узле;
— все значения в правом поддереве больше, чем значение в узле.

Простейшие операции с BST

Вставка элемента

Если вы хотите добавить элемент в дерево, вы начинаете с самого верха. Сравниваете новое значение с корнем:
— если оно меньше, переходите влево;
— если больше, переходите вправо;
— повторяете, пока не найдете пустую коробочку (место), и вы поместите туда новое значение.

class Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None

def insert(root, key):
if root is None:
return Node(key)
if key < root.key:
root.left = insert(root.left, key)
else:
root.right = insert(root.right, key)
return root


Поиск элемента

Когда вы хотите найти элемент, вы снова начинаете с корня и сравниваете:
— если нашли — отлично, элемент найден!
— если меньше, идете налево.
— если больше, идете направо.
Повторяете, пока не найдете элемент или не убедитесь, что его нет в дереве.

def search(root, key):
if root is None or root.key == key:
return root
if key < root.key:
return search(root.left, key)
return search(root.right, key)


Удаление элемента

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

def deleteNode(root, key):
if root is None:
return root
if key < root.key:
root.left = deleteNode(root.left, key)
elif key > root.key:
root.right = deleteNode(root.right, key)
else:
if root.left is None:
return root.right
elif root.right is None:
return root.left
temp = minValueNode(root.right)
root.key = temp.key
root.right = deleteNode(root.right, temp.key)
return root

def minValueNode(node):
current = node
while current.left is not None:
current = current.left
return current


Обход дерева

Обход означает посещение всех узлов в дереве. Существует несколько способов делать это:

1. In-order (Левый-Корень-Правый): посещаем сначала левое поддерево, потом текущий узел, потом правое поддерево.
2. Pre-order (Корень-Левый-Правый): посещаем сначала текущий узел, потом левое поддерево, потом правое поддерево.
3. Post-order (Левый-Правый-Корень): посещаем сначала левое поддерево, потом правое поддерево, потом текущий узел.

Пример in-order обхода:
def inorder(root):
if root:
inorder(root.left)
print(root.key, end=' ')
inorder(root.right)


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

#простымисловами #bst

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

Zen of Python

«Я 10 лет писал на Python, и вот что я думаю»

Лёша Корепанов поделился своим мнением о разработке на Python, опираясь на свой 10-летний опыт. Получилось интересно и ёмко.

Согласны с ним?

#видео

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