Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
🤔 Освещение модуля 'this' в Python


Модуль 'this' в Python - это встроенный модуль, который, когда импортируется, автоматически выводит 'The Zen of Python'. Это, по сути, набор правил и принципов, на которых строится разработка на Python. Они служат напоминанием о том, какой должна быть идеальная программа на Python, и хотя они не являются строгими правилами, они широко применяются и уважаются в сообществе Python.

Пример:

import this


После выполнения этого кода, вы увидите 'The Zen of Python' на вашем экране.

Попробуйте сами❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🌴 Создание бинарного дерева в Python


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

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

Пример кода:

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


➡️ Создание бинарного дерева

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

Пример кода:

root = Node(1)

root.left = Node(2)
root.right = Node(3)

root.left.left = Node(4)
root.left.right = Node(5)


➡️ Обход бинарного дерева

Обход - это процесс посещения каждого узла в дереве. Существуют различные методы обхода, включая прямой (Preorder), симметричный (Inorder) и обратный (Postorder) обход. В Python мы можем реализовать эти методы с помощью рекурсии или стеков.

Пример кода для прямого обхода:

def preorder_traversal(root):
if root:
print(root.data)
preorder_traversal(root.left)
preorder_traversal(root.right)
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Немного затянулось, сорри.
Как вы знаете (или не знаете, тогда знайте) метод .pop удаляет элемент по индексу.
Т.е. если бы мы написали, my_list.pop(1), то элемент JavaScript бы удалился из списка.

Но а что, если мы не прокинули индекс? Тогда выбирается последний элемент. В нашем случае - c#

Но почему ответ - это не список без последнего элемента.

Все дело в том, что мы принтуем не список, а результат выполнения функции .pop. В свою очередь, функция .pop возвращает удаленный элемент (последний элемент) (( C# ))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
💡 Использование модуля difflib в Python


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

➡️ Функция get_close_matches

Функция get_close_matches() используется для поиска наиболее похожих вариантов в последовательности. Это полезно, например, при реализации системы автодополнения, где нужно предложить пользователю наиболее вероятные варианты на основе его ввода.

Например:

import difflib

words = ['кот', 'собака', 'кит', 'слон']
difflib.get_close_matches('кот', words)


В этом примере функция возвращает: ['кот', 'кит'].

➡️ Функция ndiff

Функция ndiff() используется для сравнения двух последовательностей и выявления различий между ними. Она возвращает генератор, который производит строки, иллюстрирующие различия между последовательностями. Это полезно, например, при сравнении версий текстовых документов.

Например:

import difflib

str1 = "кот"
str2 = "кит"
diff = difflib.ndiff(str1, str2)
print('\\n'.join(diff))


В этом примере функция выводит:

  к
- о
+ и
т


➡️ Функция SequenceMatcher

Функция SequenceMatcher() является более общей и мощной функцией, чем ndiff(). Она позволяет сравнивать любые две последовательности и определять степень их сходства.

Например:

import difflib

str1 = "кот"
str2 = "кит"
match = difflib.SequenceMatcher(None, str1, str2)
print(match.ratio())


В этом примере функция возвращает: 0.6666666666666666, что означает, что строки совпадают на 66.67%.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Методы .isnumeric() и .isalpha() в Python


➡️ Метод .isnumeric()

Метод .isnumeric() в Python используется для проверки, содержит ли строка только числа. Если все символы в строке являются числами, этот метод возвращает значение True. В противном случае возвращается False. Этот метод очень полезен при валидации ввода данных, когда вы хотите убедиться, что пользователь ввел только числа.

str1 = '12345'
print(str1.isnumeric()) # Вывод: True

str2 = '12345abc'
print(str2.isnumeric()) # Вывод: False


➡️ Метод .isalpha()

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

str3 = 'abc'
print(str3.isalpha()) # Вывод: True

str4 = 'abc123'
print(str4.isalpha()) # Вывод: False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🌴 Введение в двоичное дерево поиска (BST) с примерами на Python


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

➡️ Пример BST на Python

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

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

def inorder(root):
if root:
inorder(root.left)
print(root.val),
inorder(root.right)

r = Node(50)
r = insert(r, 30)
r = insert(r, 20)
r = insert(r, 40)
r = insert(r, 70)
r = insert(r, 60)
r = insert(r, 80)

inorder(r)


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

➡️ Преимущества и недостатки BST

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


То есть, по сути, это сортированное дерево, поиск в котором легко выполнить, из-за того, что оно упорядочено.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🌀 Создать 2 одновременно работающих цикла в Python

➡️ Многопоточность в Python

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

➡️ Как создать 2 одновременных цикла

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

import threading
import time

def loop1():
for i in range(10):
print('Loop 1:', i)
time.sleep(1)

def loop2():
for i in range(10):
print('Loop 2:', i)
time.sleep(1)

thread1 = threading.Thread(target=loop1)
thread2 = threading.Thread(target=loop2)

thread1.start()
thread2.start()

thread1.join()
thread2.join()import threading
import time

def loop1():
for i in range(10):
print('Loop 1:', i)
time.sleep(1)

def loop2():
for i in range(10):
print('Loop 2:', i)
time.sleep(1)

thread1 = threading.Thread(target=loop1)
thread2 = threading.Thread(target=loop2)

thread1.start()
thread2.start()

thread1.join()
thread2.join()


В этом примере два цикла выполняются одновременно, каждый в своем собственном потоке.


Попробуйте скопировать и проверить у себя самостоятельно!👨‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Функция getsizeof() модуля sys возвращает размер объекта object в байтах. Объект может быть любым типом объекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
😮 6 простых советов по написанию чистого кода

➡️ 1. Пишите читабельный код

➡️ 2. Используйте понятные слова для обозначения переменных, функций и методов

➡️ 3. Пишите код так, чтобы любая функция или метод выполняли только одну задачу

➡️ 4. Используйте комментарии в качестве пояснений

➡️ 5. Будьте последовательны

➡️ 6. Регулярно проверяйте свой код

А какие принципы используете вы? Какие считаете занудством?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🔥 Самые популярные языки программирования и разметки, используемые вместе с Python 🔥

👋 Сегодня обсудим, какие языки программирования и разметки чаще всего используют в связке с нашим любимым Python 🐍.

JavaScript 🌐

Используется для фронтенда в веб-разработке. Вместе с Python (Django, Flask) JavaScript позволяет создавать динамичные и интерактивные веб-приложения. Вспомните такие связки как Django + React или Flask + Vue.js.

HTML & CSS 🎨

Без этих языков никуда, когда речь идет о веб-разработке. HTML отвечает за структуру, а CSS за стиль ваших страниц. Python часто используется для генерации HTML-кода и работы с CSS-стилями.

SQL 🗄

Язык запросов к базам данных. Python имеет отличные библиотеки для работы с SQL, такие как SQLAlchemy и SQLite. Любое серьезное приложение не обходится без взаимодействия с базами данных.

Markdown 📄


Легкий язык разметки для написания документации. Блоги, README файлы на GitHub и многое другое часто пишется на Markdown. Отлично подходит для документирования кода на Python.

YAML/JSON 📑


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


💬 А какие связки используете вы? Пишите в комментариях! 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Видели, что NVIDIA теперь занимает второе место в списке самых дорогих компаний мира, уступая лишь Microsoft?
👍5
🐍 Топ-5 сайтов, о которых должен знать Python-разработчик 🌐


1. Stack Overflow 💡

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

🔗 Перейти на Stack Overflow


2. Real Python 📘

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

🔗 Перейти на Real Python


3. GitHub 🐙

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

🔗 Перейти на GitHub


4. PyPI (Python Package Index) 📦

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

🔗 Перейти на PyPI


5. Python Documentation 📚


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

🔗 Перейти на Python Documentation
3