Python Hub - сборище Питонистов

channel icon
Уголок счастья для любого питониста.

https://t.me/pythonhub_chat - чат

https://t.me/devgurt - cборище программистов

https://devgurt.com/ - сайт со статьями

Условия размещения

Цена за 48 часов в ленте 1000,00
Цена за 1 час закрепления N/A
Взаимопиар Нет

казино, букмекеры

+1
1 303
подписчиков
0
354
охват 1 публикации
0
~0
постов / день
+0,0%
27,2%
ERR % ?

Статистика

Последние публикации

Python Hub - сборище Питонистов
10 января 2025 г. 18:42
Захостить сайт у себя на компе, но чтобы он был в публичном доступе? 😳😳
Легко за 5 минут
👏👏

https://youtu.be/_1V2lrCtR4Ehttps://youtu.be/_1V2lrCtR4E
Python Hub - сборище Питонистов
7 января 2025 г. 21:18
🤞 Лучшие онлайн редакторы кода для Python: Подробный обзор

1. 🏆 Google Colab


https://colab.research.google.comhttps://colab.research.google.com

• Бесплатный доступ к GPU и TPU для машинного обучения
• Полная интеграция с экосистемой Google (Drive, Sheets, Gmail)
• Поддержка Jupyter notebooks с возможностью совместного редактирования
• Предустановленные популярные библиотеки (TensorFlow, PyTorch, OpenCV)
• Возможность сохранения и загрузки моделей
• Выполнение долгих вычислений в фоновом режиме
• Бесплатное облачное хранилище до 15 ГБ

2. 🎯 Replit

https://replit.comhttps://replit.com

• Мощный встроенный терминал с полным доступом
• Совместная работа в реальном времени с функцией pair programming
• Встроенный хостинг проектов с публичным URL
• Система контроля версий с интеграцией GitHub
• Автоматическое управление зависимостями
• Встроенный отладчик кода
• Поддержка кастомных конфигураций и переменных окружения

3. 💻 PyCharm Online

https://www.jetbrains.com/pycharm/onlinehttps://www.jetbrains.com/pycharm/online

• Профессиональная IDE в браузере от JetBrains
• Продвинутое автодополнение кода с анализом типов
• Встроенный отладчик с визуализацией переменных
• Интеграция с системами контроля версий
• Рефакторинг кода и поиск ошибок на лету
• Поддержка удаленной разработки
• Интеграция с базами данных и REST клиент

4. 🚀 Jupyter Lab


https://jupyter.orghttps://jupyter.org

• Интерактивные ноутбуки с поддержкой markdown
• Продвинутая визуализация данных и графиков
• Поддержка множества форматов (Python, R, Julia)
• Расширяемость через систему плагинов
• Встроенный просмотрщик CSV, JSON, изображений
• Интерактивные виджеты для данных
• Возможность создания презентаций

5. ⚡️ Python Anywhere


https://www.pythonanywhere.comhttps://www.pythonanywhere.com

• Полноценный хостинг веб-приложений Python
• Консоль Python с доступом через браузер
• Поддержка популярных фреймворков (Django, Flask)
• Встроенная поддержка MySQL и PostgreSQL
• Бесплатный тариф с базовым функционалом
• Автоматическое обновление сертификатов SSL
• Планировщик задач для автоматизации
Python Hub - сборище Питонистов
4 января 2025 г. 11:03
Разработка игр на Python

🎮 Привет, питонисты! Давайте поговорим о том, как превратить ваши навыки Python в настоящие игровые шедевры. Знаю-знаю, многие считают, что для геймдева нужен Unity или Unreal Engine, но поверьте – Python тоже может!

🐍 Начнём с того, что Python – это не просто язык для веб-разработки или data science. Благодаря множеству специализированных библиотек, мы можем творить настоящие чудеса. И нет, я не шучу – на Python создано немало крутых инди-игр!

🚀 Самое крутое в разработке игр на Python – низкий порог входа. Если вы уже знаете основы языка, то буквально за пару дней сможете создать свой первый платформер или "змейку". А дальше – только ваша фантазия и упорство!

➡️ Основные библиотеки для геймдева

🎮 Pygame - самая популярная библиотека:

- Простой и понятный синтаксис
- Огромное комьюнити
- Отличная документация
- Ограниченные возможности для 3D
- Не самая высокая производительность

🎲 Arcade - современная альтернатива:

- Современный и чистый API
- Встроенная физика
- Хорошая производительность
- Меньше обучающих материалов
- Относительно молодая библиотека

📱 Kivy - для кроссплатформенной разработки:

- Работает на всех платформах, включая мобильные
- Поддержка мультитач
- Сложнее в освоении
- Больше подходит для приложений

🛠 Из личного опыта могу сказать – начните с Pygame. Эта библиотека как конструктор LEGO: простая, понятная и при этом мощная. Вот что можно сделать уже на старте:

- 2D-платформеры
- Аркады
- Головоломки
- Карточные игры
- Шутеры с видом сверху


💡 Но есть и подводные камни (куда же без них?). Python не самый быстрый язык, поэтому для создания масштабных 3D-игр лучше выбрать что-то другое. Зато для прототипирования или создания небольших игр – самое то!

🔥 А знаете, что самое крутое? Комьюнити! Python-разработчики всегда готовы помочь и поделиться опытом. На GitHub полно открытых проектов, где можно подсмотреть решения и научиться новому.

🎮 И помните главное: создание игр – это не только код. Это творчество, это история, это дизайн. Даже простая игра может стать хитом, если в неё вложить душу и креатив.

💪 Так что не бойтесь экспериментировать! Python + геймдев = отличная комбинация для старта. А там, глядишь, и до Steam доберётесь! 😉
Python Hub - сборище Питонистов
3 января 2025 г. 21:50
Python Hub - сборище Питонистов
30 декабря 2024 г. 22:43
📕📕 Методы и Функции в Python. А где разница?

В мире Python-разработки часто возникает путаница между методами и функциями. Давайте детально разберем эти важные концепции и научимся их правильно использовать. 🤔

📚 Что такое функция?

Функция в Python — это самостоятельный блок кода, который выполняет определенную задачу. Представьте её как отдельный инструмент, который можно использовать где угодно в программе. Функции создаются с помощью ключевого слова def и могут принимать аргументы для обработки.

def calculate_area(length, width):
return length * width

# Использование функции
room_area = calculate_area(5, 4)
print(f"Площадь комнаты: {room_area} кв.м.")


🔧 Что такое метод?

Метод — это функция, которая принадлежит определённому классу или объекту. Он имеет доступ к данным объекта и может изменять его состояние. Методы всегда определяются внутри классов и вызываются через экземпляр класса или сам класс.

class BankAccount:
def __init__(self, balance):
self.balance = balance

def deposit(self, amount):
self.balance += amount
return f"Новый баланс: {self.balance}"

# Использование метода
account = BankAccount(1000)
account.deposit(500) # Вызов метода через объект


🔍 Ключевые различия

1. Область видимости:

- Функции работают с переданными им аргументами
- Методы имеют доступ к данным объекта через self

2. Способ вызова:


- Функции вызываются напрямую: function_name()
- Методы вызываются через объект: object.method()
3. Контекст выполнения:

- Функции независимы от контекста
- Методы всегда работают в контексте своего класса

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

Когда использовать функции:

• Для операций, не требующих доступа к состоянию объекта
• При работе с независимыми данными
• Для создания утилитарных операций

Когда использовать методы:

• При работе с данными объекта
• Когда логика тесно связана с классом
• Для реализации поведения объекта
Python Hub - сборище Питонистов
27 декабря 2024 г. 18:23
Python Hub - сборище Питонистов
26 декабря 2024 г. 18:40
📊 Создание интерактивных визуализаций данных с Plotly и Bokeh: Краткое руководство


Признайтесь, кто из вас устал от статичных matplotlib графиков? Сегодня поговорим о том, как превратить ваши данные в интерактивные произведения искусства с помощью Plotly и Bokeh!

🎨 Начинаем с Plotly

Plotly - это как швейцарский нож в мире визуализации. Вот простой пример создания интерактивного графика:

import plotly.express as px
import pandas as pd

# Создаём тестовые данные
df = pd.DataFrame({
'Месяц': ['Янв', 'Фев', 'Март', 'Апр', 'Май'],
'Продажи': [100, 150, 200, 180, 250],
'Прибыль': [20, 30, 40, 35, 50]
})

# Создаём интерактивный график
fig = px.line(df, x='Месяц', y=['Продажи', 'Прибыль'],
title='Динамика продаж и прибыли',
template='plotly_dark')

# Добавляем hover-эффекты
fig.update_traces(mode='lines+markers', hovertemplate='%{y:,.0f}₽')

# Сохраняем как HTML или показываем в браузере
fig.write_html('sales_dashboard.html')


🌈 Bokeh: Мощь серверного рендеринга

А теперь давайте создадим что-то более продвинутое с Bokeh:

from bokeh.plotting import figure, show
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, HoverTool
import numpy as np

# Создаём интерактивный scatter plot
x = np.random.normal(0, 1, 1000)
y = np.random.normal(0, 1, 1000)

source = ColumnDataSource(data=dict(
x=x,
y=y,
size=np.random.uniform(5, 15, 1000),
color=['#%06x' % np.random.randint(0, 0xFFFFFF) for _ in range(1000)]
))

p = figure(width=800, height=600, title='Интерактивный Scatter Plot')
p.scatter('x', 'y', size='size', color='color', alpha=0.6, source=source)

# Добавляем интерактивные подсказки
hover = HoverTool(tooltips=[
('X', '@x{0.000}'),
('Y', '@y{0.000}'),
('Размер', '@size{0.00}')
])
p.add_tools(hover)

show(p)


🔥 Продвинутые фичи

Вот несколько крутых возможностей, о которых многие не знают:

1. Анимированные переходы в Plotly:

import plotly.graph_objects as go

fig = go.Figure(
data=[go.Scatter(x=[1, 2, 3], y=[1, 3, 2])],
layout=dict(
updatemenus=[dict(
type="buttons",
buttons=[dict(label="Play",
method="animate",
args=[None])]
)]
)
)


1. Real-time обновления в Bokeh:

from bokeh.plotting import curdoc
from functools import partial
from tornado.ioloop import IOLoop

def update():
source.data['y'] = np.random.rand(100)

curdoc().add_periodic_callback(update, 100) # Обновление каждые 100мс


💡 Pro-tip: Для больших датасетов используйте датаклассы и оптимизируйте память:

from dataclasses import dataclass
from typing import List

@dataclass
class DataPoint:
x: float
y: float
category: str

data_points: List[DataPoint] = [] # Эффективнее, чем DataFrame для больших данных


⚡️ Личный опыт: недавно делал дашборд для финтех-проекта. Начал с Matplotlib, намучался с интерактивностью, переписал на Plotly - заказчик в восторге, пользователи счастливы. Время разработки сократилось вдвое!

🤔 Что выбрать?

- Plotly: если нужны красивые графики "из коробки" и важна простота использования
- Bokeh: если работаете с большими данными или нужна глубокая кастомизация
Python Hub - сборище Питонистов
26 декабря 2024 г. 11:43
Новогодняя елка технаря
🎄🎄🎄
Python Hub - сборище Питонистов
25 декабря 2024 г. 19:55
❗️❗️🤖🤖 Искусственный интеллект с Python: создание своих моделей с PyTorch и TensorFlow

Привет, питонисты! Сегодня поговорим о том, как превратить свой код в настоящий искусственный интеллект.

Давайте сразу посмотрим на простой пример в PyTorch:

import torch
import torch.nn as nn

class SimpleNet(nn.Module):
def __init__(self):
super().__init__()
self.layer1 = nn.Linear(784, 128)
self.relu = nn.ReLU()
self.layer2 = nn.Linear(128, 10)

def forward(self, x):
x = self.layer1(x)
x = self.relu(x)
return self.layer2(x)

Создаем модель одной строчкой! 🎯
model = SimpleNet().to('cuda' if torch.cuda.is_available() else 'cpu')


🤔 Круто, правда? А теперь давайте глянем, как то же самое делается в TensorFlow:

import tensorflow as tf

model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),
tf.keras.layers.Dense(10)
])

# Компилируем модель
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])


💡 Для создания своей первой модели вам понадобится всего три шага:

1. Подготовка данных (самая нудная, но важная часть)
2. Определение архитектуры (тут можно пофантазировать)
3. Обучение модели (запасайтесь терпением и мощным железом)

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

# PyTorch стиль
optimizer = torch.optim.Adam(model.parameters())
criterion = nn.CrossEntropyLoss()

for epoch in range(10):
for batch_x, batch_y in dataloader:
optimizer.zero_grad()
outputs = model(batch_x)
loss = criterion(outputs, batch_y)
loss.backward()
optimizer.step()


⚡️ Крутая фишка: используйте GPU-ускорение! Одна строчка кода .to('cuda') в PyTorch или with tf.device('/GPU:0') в TensorFlow - и ваша модель учится в разы быстрее.

🔥 Про что часто забывают новички? Про валидацию! Вот как это делается правильно:

# Разбиваем данные
from sklearn.model_selection import train_test_split

X_train, X_val, y_train, y_val = train_test_split(
X, y, test_size=0.2, random_state=42
)

# Следим за метриками
val_loss = []
for epoch in range(epochs):
model.train()
# ... обучение ...

model.eval()
with torch.no_grad():
val_predictions = model(X_val)
v_loss = criterion(val_predictions, y_val)
val_loss.append(v_loss.item())
Python Hub - сборище Питонистов
20 декабря 2024 г. 18:33
AIOgram возвращается!🎉🎉

Разбираем, что такое роутеры
📍📍

https://www.youtube.com/watch?v=82rrtC6CFJMhttps://www.youtube.com/watch?v=82rrtC6CFJM
Python Hub - сборище Питонистов
17 декабря 2024 г. 18:01
Ой, requirements.txt на 1 млн. строк😬
Python Hub - сборище Питонистов
15 декабря 2024 г. 21:21
😝😝😝😝 Unit-тестирование vs Property-тестирование: плюсы, минусы и подходы

🤔 Привет, Питонисты! Сегодня поговорим о вечном противостоянии в мире тестирования. Знаете, как в споре "табы или пробелы", у нас есть другая горячая тема: unit-тесты против property-based тестирования. Давайте разберёмся без занудства, но с конкретикой!

🎯 Unit-тестирование - это как стрельба по мишеням. Мы точно знаем, какой результат хотим получить, и проверяем конкретные случаи. Например:

def test_sum():
assert sum([1, 2, 3]) == 6
assert sum([-1, 1]) == 0


✨ Плюсы unit-тестов:

- Понятны даже джуниору
- Легко дебажить
- Отлично подходят для документирования кода
- Быстро выполняются

😤 Минусы:

- Покрывают только те кейсы, о которых мы подумали
- Часто пропускаем edge-cases
- Может быть много копипасты

🎲 А вот property-based тестирование - это как игра в рулетку, только с гарантированным выигрышем! Вместо конкретных значений мы определяем свойства, которым должна соответствовать наша функция. Библиотека (например, hypothesis) сама генерирует тестовые данные:

from hypothesis import given
import hypothesis.strategies as st

@given(st.lists(st.integers()))
def test_sum_properties(numbers):
assert sum(numbers) == sum(reversed(numbers))
assert sum(numbers + [0]) == sum(numbers)


🚀 Преимущества property-testing:

- Находит неочевидные баги
- Меньше кода, больше покрытие
- Заставляет думать о свойствах функций, а не о конкретных значениях

🤯 Недостатки:

- Сложнее придумывать правильные свойства
- Медленнее выполняются
- Может быть сложно понять, почему тест упал

💡 Не выбирайте что-то одно! Используйте unit-тесты для очевидных кейсов и документирования, а property-based - для поиска краевых случаев и сложной логики. Особенно это актуально для математических функций, парсеров и сериализаторов.

🎉 В идеальном мире ваши тесты должны быть как хороший детектив - проверять очевидное и раскрывать неожиданное. И помните: лучший тест - тот, который ловит баги до прода!лучший тест - тот, который ловит баги до прода!
Python Hub - сборище Питонистов
13 декабря 2024 г. 18:15
💥💥Новый видос о том, как в Pygame игре добавить коллизию.

https://youtu.be/dL8OmmDBcxU
Python Hub - сборище Питонистов
13 декабря 2024 г. 12:27
Создание CLI приложений с Click в Python: от простого к продвинутому 🚀

Привет, пайтонисты! 👋 Сегодня поговорим о том, как создавать крутые CLI-приложения с помощью Click. Если вам надоело писать бесконечные if'ы для обработки аргументов командной строки, то этот пост определенно для вас!

Начнем с того, почему вообще стоит использовать Click, а не встроенный argparse:

- Декораторный подход, который выглядит элегантно и интуитивно понятен
- Автоматическая генерация справки и сообщений об ошибках
- Вложенные команды из коробки
- Поддержка автодополнения в shell

Давайте посмотрим на простой, но реальный пример. Представим, что мы делаем утилиту для работы с файлами:

import click

@click.group()
def cli():
"""Утилита для работы с файлами"""
pass

@cli.command()
@click.argument('path')
@click.option('--lines', '-l', is_flag=True, help='Показать количество строк')
def analyze(path, lines):
"""Анализирует файл и выводит статистику"""
try:
with open(path) as f:
content = f.readlines()
if lines:
click.echo(f'Количество строк: {len(content)}')
except FileNotFoundError:
click.secho('Файл не найден! 😱', fg='red')

if __name__ == '__main__':
cli()


Крутая штука в Click – это то, как легко добавлять новые команды. Хотите добавить подкоманду? Просто навешиваете еще один декоратор! 🎯

А теперь лайфхак, который многие упускают: Click умеет создавать красивые прогресс-бары:

@cli.command()
@click.argument('path')
def process(path):
"""Обрабатывает файлы с прогресс-баром"""
files = os.listdir(path)
with click.progressbar(files, label='Обработка файлов') as bar:
for f in bar:
# что-то делаем с файлом
time.sleep(0.1)


Про что еще стоит знать? 🤔

Click отлично работает с цветным выводом. Хотите привлечь внимание пользователя? Используйте click.secho():

click.secho('Внимание! 🚨', fg='yellow', bold=True)
click.secho('Ошибка! ❌', fg='red')
click.secho('Успех! ✅', fg='green')


И напоследок, трюк – создание интерактивных подтверждений:

if click.confirm('Уверены, что хотите удалить все файлы? 🤔'):
click.echo('Поехали! 🚀')


P.S. Не забудьте установить библиотеку через pip install click.

https://click.palletsprojects.com/en/stable/https://click.palletsprojects.com/en/stable/
Python Hub - сборище Питонистов
13 декабря 2024 г. 11:49
Разбор 👨‍💻

🔍 Что возвращает метод строки find()?

Самый быстрый способ это узнать — заглянуть в документацию Python. Согласно официальной документации, если подстрока не найдена, метод `find()` возвращает -1.

Теперь интересный момент: что произойдет, если преобразовать `-1` в логическое значение? Давайте проверим:


🔍 Что возвращает метод строки find()?

Самый быстрый способ это узнать — заглянуть в документацию Python. Согласно официальной документации, если подстрока не найдена, метод `find()` возвращает -1.

Теперь интересный момент: что произойдет, если преобразовать `-1` в логическое значение? Давайте проверим:


print(bool(-1))  # Результат: True



Как видите, -1 в Python считается истинным значением (True) при приведении к типу bool.-1 в Python считается истинным значением (True) при приведении к типу bool.
Python Hub - сборище Питонистов
8 декабря 2024 г. 13:57
Что выдаст код выше?
Опрос
  • С++ the best
  • Php the best
  • Ничего
  • Error
  • Не знаю
Python Hub - сборище Питонистов
8 декабря 2024 г. 13:57
Python Hub - сборище Питонистов
7 декабря 2024 г. 12:03
Репост:
❗️ В рамках тестирования нового оборудования в Грузии — 200 бесплатных серверов по тарифу NAT Cloud-F уже доступны для заказа!

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

Важно: Серверы останутся с вами на постоянной основе, пока вы их продлеваете (продление — бесплатно). Вы также можете докупить дополнительные ресурсы к этому тарифу, чтобы пользоваться им как полноценным сервером Cloud.

➡️Для заказа перейдите по ссылке:
https://htk.ge/index.php?rp=/store/nat-cloud
и выберите тариф Cloud-F.
Python Hub - сборище Питонистов
6 декабря 2024 г. 18:48
Вы долго ждали. И вот оно!

https://www.youtube.com/watch?v=rsHfKKLx2Bkhttps://www.youtube.com/watch?v=rsHfKKLx2Bk
Python Hub - сборище Питонистов
3 декабря 2024 г. 17:01
Как использовать pathlib для работы с путями вместо os.path


Привет, питонисты! Сегодня поговорим о том, как сделать работу с путями в Python более элегантной и современной. Если вы всё ещё используете os.path, то пора двигаться вперёд!

Модуль pathlib появился в Python 3.4 и полностью изменил правила игры. Это как пересесть с древнего велосипеда на Tesla – всё те же базовые принципы, но насколько же удобнее! 🚗

💡 Почему стоит перейти на pathlib?

- Объектно-ориентированный подход вместо строковых операций
- Кроссплатформенность из коробки
- Цепочки методов, которые читаются как поэзия
- Меньше кода, больше смысла


🎯 Давайте посмотрим на практические примеры:

# Старый подход с os.path
import os.path
file_path = os.path.join('data', 'users', 'config.json')
parent_dir = os.path.dirname(file_path)
file_name = os.path.basename(file_path)

# Новый подход с pathlib
from pathlib import Path
file_path = Path('data') / 'users' / 'config.json'
parent_dir = file_path.parent
file_name = file_path.name


🔥 Крутые фишки pathlib, о которых вы могли не знать:

➡️Проверка существования файла:

path = Path('config.json')
if path.exists():
print('Файл существует!')


➡️ Создание директорий одной командой:

Path('nested/directories/structure').mkdir(parents=True, exist_ok=True)


➡️ Поиск файлов по маске (glob):

# Найти все .py файлы в текущей директории
python_files = list(Path('.').glob('*.py'))


➡️ Работа с суффиксами и расширениями:

path = Path('document.pdf')
print(path.suffix) # .pdf
print(path.stem) # document


🎨 А теперь самое вкусное – цепочки методов:

config_path = (Path.home() / 'projects' / 'app' / 'config.json')
if config_path.exists():
data = json.loads(config_path.read_text())


⚡️ Pro-tip: pathlib отлично работает с контекстными менеджерами:

with Path('log.txt').open('w') as f:
f.write('Logging started')


🤔 Когда стоит использовать os.path? Практически никогда! Разве что при работе с легаси-кодом или если вам нужны какие-то очень специфические операции с путями.

🎉 В заключение: pathlib – это не просто альтернатива os.path, это следующий эволюционный шаг в работе с файловой системой в Python. Он делает код чище, понятнее и приятнее в поддержке. Если вы ещё не перешли на pathlib, самое время начать!

P.S. Не забудьте поставить лайк и поделиться постом с коллегами, которые всё ещё живут в мире os.path 😉😉😉😉