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
Топ 3 расширения для VSCode 👩‍💻

➡️ autoDocstring
Быстро генерирует докстринги по шаблону. Удобно когда пишешь либы. Скачать можно тут

➡️ Auto-Collapse Folders
Сворачивает все лишние папки, оставляет открытой только ту, в которой ты находишься.
Скачать можно тут

➡️ Code Spell Checker
Проверяет написания всех слов, исправляет опечатки. Скачивай тут. Чтобы был русский язык качай еще это

Ставьте 👍 и заходите в наш чатик)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🚀 Создание многопоточных приложений с concurrent.futures в Python (основы)


🧠 Что такое concurrent.futures?

Представьте, что вы супергерой, способный делать несколько дел одновременно. Это и есть concurrent.futures! 🦸‍♂️ Этот мощный модуль в Python позволяет вам выполнять задачи параллельно, экономя драгоценное время и ресурсы.

🛠 Основные инструменты

В нашем арсенале два главных оружия:

- 🧵 ThreadPoolExecutor - для задач, связанных с вводом-выводом
- 🖥 ProcessPoolExecutor - для вычислительно-интенсивных задач

💻 Давайте напишем код!

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

import concurrent.futures
import time

def task(name):
print(f"Задача {name} начата")
time.sleep(2)
return f"Задача {name} завершена"

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
tasks = [executor.submit(task, f"#{i}") for i in range(5)]

for future in concurrent.futures.as_completed(tasks):
print(future.result())


🎉 Вуаля! Мы только что создали многопоточное приложение, которое выполняет 5 задач параллельно, используя пул из 3 потоков.

Преимущества использования concurrent.futures

- ⚡️ Повышение производительности
- 🧩 Простота использования
- 🔄 Автоматическое управление потоками
- 🎛 Гибкость в настройке

🔺 Заключение

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

Удачи в ваших кодерских приключениях! 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Профилирование Python-кода: Ваш путь к оптимизации! 🚀

1. Зачем нужно профилирование? 🤔

Представьте, что ваш код - это спортивный автомобиль. Профилирование - это как диагностика двигателя. Оно помогает найти "узкие места" и раскрыть истинный потенциал вашего кода. Круто, правда? 😎

2. cProfile: Ваш верный помощник 🦸‍♂️

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

import cProfile

def my_function():
# Ваш код здесь
pass

cProfile.run('my_function()')


Вуаля! 🎩 Теперь у вас есть детальный отчет о работе вашей функции.

3. line_profiler: Микроскоп для вашего кода 🔬

Если cProfile - это общая картина, то line_profiler - это микроскоп. Он анализирует каждую строку кода. Потрясающе, не так ли?

@profile
def my_function():
# Ваш код здесь
pass

# Запустите с: kernprof -l -v your_script.py


Теперь вы видите, сколько времени занимает каждая строка. Это как рентген для вашего кода! 📊

4. Практические советы 💡

- 🟠Профилируйте регулярно: Это как чистка зубов для вашего кода!
- 🟠 Фокусируйтесь на горячих точках: 80% времени обычно тратится на 20% кода.
- 🟠 Не оптимизируйте преждевременно: Сначала убедитесь, что код работает правильно.

5. Заключение: Станьте мастером оптимизации! 🏆

Профилирование - это ваш секретный ингредиент для создания быстрого и эффективного Python-кода. С cProfile и line_profiler в вашем арсенале, вы готовы покорить любые вершины производительности! 🚀

Помните: великая сила профилирования приходит с великой ответственностью. Используйте её мудро, и ваш код будет летать! 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Машинное обучение с PyTorch: создание и обучение нейронных сетей 🧠💻

В мире современных технологий машинное обучение играет ключевую роль. Одним из самых популярных инструментов для разработки и обучения нейронных сетей является PyTorch.

Что такое PyTorch? 🤔

PyTorch - это открытая библиотека машинного обучения, разработанная Facebook AI Research. Она предоставляет гибкий и интуитивно понятный интерфейс для создания сложных нейронных сетей.

Основы создания нейронной сети в PyTorch 🛠

Создание нейронной сети в PyTorch начинается с определения архитектуры. Вот простой пример:

import torch.nn as nn

class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(784, 128)
self.fc2 = nn.Linear(128, 10)

def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x


Этот код определяет простую нейронную сеть с двумя полносвязными слоями.

Обучение нейронной сети 📚

Обучение - это процесс, в котором сеть корректирует свои веса для минимизации ошибки предсказания. Вот базовый цикл обучения:

optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

for epoch in range(num_epochs):
for batch in data_loader:
optimizer.zero_grad()
outputs = model(batch)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()


Преимущества PyTorch 🌟

- Динамические вычислительные графы
- Простота отладки
- Богатая экосистема и сообщество
- Интеграция с Python

🔺 Заключение

PyTorch предоставляет мощный и гибкий инструментарий для создания и обучения нейронных сетей. С его помощью вы можете реализовать самые современные алгоритмы машинного обучения и решать сложные задачи в области искусственного интеллекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
💟💟💟💟💟💟 💟💟💟💟💟💟💟
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31🥴1
Python Keywords👨‍💻

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

Пример слов можно увидеть на картинке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Библиотека Random в Python

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


➡️ Функция randint()

randint() - это функция, которая генерирует случайное целое число в заданном диапазоне. Давайте рассмотрим пример:

import random

print(random.randint(1, 10))

В этом примере randint() будет генерировать случайное число в диапазоне от 1 до 10, включая границы. Функция возвращает случайное число, которое затем выводится на экран.


➡️ Функция shuffle()

shuffle() - это функция, которая перемешивает элементы последовательности случайным образом. Давайте рассмотрим пример:

import random

numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)

print(numbers)

В этом примере мы создали список чисел от 1 до 5, а затем перемешали его с помощью функции shuffle(). Функция изменяет список в случайном порядке, и результат выводится на экран.


➡️ Функция choice()

choice() - это функция, которая выбирает случайный элемент из последовательности. Давайте рассмотрим пример:

import random

fruits = ['apple', 'banana', 'orange', 'grape']
print(random.choice(fruits))

В этом примере мы создали список фруктов, а затем выбрали случайный фрукт с помощью функции choice(). Функция возвращает случайный элемент из списка, который затем выводится на экран.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🥴2
Основные типы данных языка программирования Python.👍

Сохраняй
, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
Что выдаст код выше?
Anonymous Quiz
69%
True
12%
False
14%
Error
5%
Не знаю
👍5
Обработка естественного языка с spaCy: анализ и генерация текста 📊

1. Анализ текста с помощью spaCy
🔍

1.1. Токенизация и лемматизация

SpaCy предоставляет эффективные инструменты для разбиения текста на токены и определения их базовых форм:

import spacy

nlp = spacy.load("ru_core_news_sm")
doc = nlp("Кошки любят спать на мягких подушках.")

for token in doc:
print(f"{token.text} -> {token.lemma_}")


1.2. Определение частей речи

SpaCy автоматически определяет части речи для каждого токена:

for token in doc:
print(f"{token.text} - {token.pos_}")


1.3. Распознавание именованных сущностей

Библиотека способна выделять в тексте именованные сущности, такие как имена, организации и локации:

for ent in doc.ents:
print(f"{ent.text} - {ent.label_}")


2. Генерация текста с использованием spaCy
📝

Хотя spaCy в первую очередь предназначен для анализа текста, его можно использовать и для помощи в генерации:

2.1. Использование зависимостей для построения предложений

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

def generate_sentence(subject, verb, object):
doc = nlp(f"{subject} {verb} {object}")
return " ".join([token.text for token in doc])

print(generate_sentence("Программист", "пишет", "код"))


2.2. Использование векторных представлений слов

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

def find_similar_word(word, n=3):
token = nlp(word)[0]
similar_words = []
for lex in nlp.vocab:
if lex.has_vector:
if lex.is_lower == token.is_lower and lex.is_alpha:
similarity = token.similarity(lex)
similar_words.append((lex.text, similarity))
return sorted(similar_words, key=lambda x: x[1], reverse=True)[:n]

print(find_similar_word("компьютер"))
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42❤‍🔥1
🌍 Работа с геоданными: использование библиотеки GeoPandas


📊 Основные возможности GeoPandas

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

Ключевые особенности:

- Поддержка различных форматов геоданных (Shapefile, GeoJSON и др.)
- Геометрические операции (пересечение, объединение, буферизация)
- Пространственные соединения и агрегации
- Интеграция с matplotlib для визуализации

🔧 Установка и начало работы

Установка GeoPandas производится через pip:

pip install geopandas


После установки можно приступать к работе:

import geopandas as gpd

# Чтение геоданных
gdf = gpd.read_file('path/to/your/geodata.shp')

# Базовые операции
print(gdf.head())
print(gdf.crs) # Система координат


🛠 Практические примеры использования

1. Визуализация данных

GeoPandas позволяет легко визуализировать геоданные:

import matplotlib.pyplot as plt

gdf.plot()
plt.title('Визуализация геоданных')
plt.show()


2. Пространственные операции

Выполнение геометрических операций, таких как буферизация:

buffered = gdf.geometry.buffer(1)  # Создание буфера в 1 единицу


3. Пространственные соединения

Объединение двух наборов геоданных на основе их пространственных отношений:

cities = gpd.read_file('cities.shp')
countries = gpd.read_file('countries.shp')

cities_with_countries = gpd.sjoin(cities, countries, how="inner", predicate="within")


📈 Преимущества использования GeoPandas

Использование GeoPandas предоставляет ряд преимуществ:

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

Источник: Python Hub - сборище Питонистов 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Python укрепляет лидерство в рейтинге TIOBE 🥇

Согласно последнему индексу TIOBE, Python продолжает укреплять свои позиции как самый популярный язык программирования. За месяц его доля выросла с 16,12% до 18,04%, что является значительным скачком.

Генеральный директор TIOBE Software Пол Янсен отмечает:


"Вероятно, Python станет самым популярным языком программирования в истории"


Ключевые моменты:

- Python опережает C++ на рекордные 8%
- Rust и Kotlin названы потенциальными конкурентами в будущем
- Kotlin поднялся с 27-го на 18-е место за год
- Go также набирает популярность

Стоит отметить, что TIOBE — не единственный источник данных о популярности языков. Например, по данным опроса Stack Overflow, расстановка сил немного отличается.

Статистика по другим яп читать тут

Источник: Python Hub - сборище Питонистов 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🖥 Программисту нужна поддержка? Как коту — клавиатура!

DevGurt — для тех, кто живет кодом и дышит переменными. 👩‍💻

Для питонистов есть свой отдельный уголок счастья — Python Hub. 👩‍💻

💬 В нашем чатике можно обсудить все — от лучших библиотек до выбора кофе для ночных релизов. А вдруг еще и работу найдешь.

📖 Лень читать тут? Забегай на devgurt.com, там уже есть статьи, которые помогут тебе победить любые баги. Кстати, авторы статей в скором времени смогут их монетизировать.

▶️ А если лень читать — открой YouTube и включи канал Shcoder. О сложных вещах простым языком.

😎 Кодь как боженька, присоединяйся!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👩‍💻 Лучшие пакеты PyPi !?

Решил повторно проверить, какие вообще самые популярные (по каким-то критериям, хз сам каким) библиотеки на PyPi

PyPI (Python Package Index) — это официальный репозиторий пакетов для языка программирования Python. Здесь собраны тысячи библиотек, модулей и приложений, которые могут быть полезны для разработчиков Python.

Перейти к стате

Для ленивых предлагаю скрин!


Источник: Python Hub - сборище Питонистов 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2👎1
📕 Введение в множества Python

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

Создать множество очень просто:

colors = {"red", "blue", "green"}
print(colors) # Вывод: {'blue', 'green', 'red'}


Заметили, что порядок элементов изменился? Это нормально для множеств - они не сохраняют порядок.

➡️Методы множеств

Теперь давайте рассмотрим самые полезные методы для работы с множествами.

➡️1. add() - Добавление элемента

Метод add() позволяет добавить новый элемент в множество. Если элемент уже существует, ничего не произойдет.

fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits) # Вывод: {'apple', 'banana', 'cherry', 'orange'}
fruits.add("apple") # Ничего не изменится
print(fruits) # Вывод: {'apple', 'banana', 'cherry', 'orange'}


➡️ 2. remove() и discard() - Удаление элементов

Оба метода удаляют элемент из множества, но есть важное различие:

- remove() вызовет ошибку, если элемента нет в множестве
- discard() просто ничего не сделает, если элемента нет

numbers = {1, 2, 3, 4, 5}
numbers.remove(3)
print(numbers) # Вывод: {1, 2, 4, 5}

numbers.discard(10) # Ничего не произойдет
print(numbers) # Вывод: {1, 2, 4, 5}

numbers.remove(10) # Вызовет ошибку KeyError


➡️ 3. union() - Объединение множеств

Метод union() объединяет два или более множеств. Это как смешать шарики из разных мешков в один большой мешок!

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = set1.union(set2)
print(set3) # Вывод: {1, 2, 3, 4, 5}


➡️ 4. intersection() - Пересечение множеств

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

pizza_lovers = {"Алиса", "Боб", "Чарли", "Дэвид"}
ice_cream_lovers = {"Боб", "Чарли", "Ева", "Фрэнк"}
pizza_and_ice_cream = pizza_lovers.intersection(ice_cream_lovers)
print(pizza_and_ice_cream) # Вывод: {'Боб', 'Чарли'}


➡️ 5. difference() - Разность множеств

Метод difference() возвращает элементы, которые есть в одном множестве, но отсутствуют в другом.

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
diff = set1.difference(set2)
print(diff) # Вывод: {1, 2, 3}


➡️ 6. symmetric_difference() - Симметричная разность

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

group1 = {"пицца", "бургер", "суши"}
group2 = {"суши", "рамен", "пицца"}
unique_preferences = group1.symmetric_difference(group2)
print(unique_preferences) # Вывод: {'бургер', 'рамен'}


➡️ Заключение
Множества в Python - это невероятно полезный инструмент для работы с уникальными элементами и выполнения различных операций над наборами данных.


Источник: Python Hub - сборище Питонистов 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52