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

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

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

https://t.me/pythonhub_chat - чат
Download Telegram
Python Hub - сборище Питонистов
Photo
Мораль😎

Атрибуты класса (count) являются общими для всех экземпляров класса.
Метод __del__ вызывается автоматически, когда объект уничтожается (например, после выполнения del или когда программа завершается).
Если объект больше не имеет ссылок, он удаляется сборщиком мусора, и вызывается деструктор.
👍2
Бедный Тимми
😁111
🌟 Global и Nonlocal в Python 🌟

Привет, питонисты! 👋 Сегодня разберём тему, которая частенько вызывает головную боль даже у опытных разработчиков — области видимости переменных и ключевые слова global и nonlocal.

🤔 В чём суть?
Представьте, что вы пишете функцию внутри функции (да, такое бывает!), и вам нужно изменить переменную "снаружи". Без special words Python скажет: "Неа, не получится!" 😅

🎯 Как это работает?

Global:

x = 5  # глобальная переменная

def change_x():
global x # говорим Python, что хотим менять глобальную x
x = 10 # теперь работает!

change_x()
print(x) # выведет 10


🎈 Nonlocal:

def outer():
counter = 0 # переменная внешней функции

def inner():
nonlocal counter # хотим менять counter из outer
counter += 1 # работает!

inner()
print(counter) # выведет 1

outer()


⚡️ Важные моменты:

➡️ Global можно использовать для создания новых переменных
➡️ Nonlocal работает только с существующими переменными
➡️ В Python 3.13 пофиксили баги с global в блоках else и except

🚫 Типичные ошибки:

Неправильно:

def bad_function():
print(x) # ошибка!
global x # global нужно объявлять до использования
x = 10


Правильно:

def good_function():
global x
print(x) # теперь всё ок
x = 10


🛠 Полезные инструменты:

Чтобы проверить, какие переменные у вас есть:

print(globals())  # все глобальные переменные
print(locals()) # все локальные переменные


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

- Используйте global только когда действительно необходимо
- Nonlocal отлично подходит для счетчиков и аккумуляторов
- Всегда документируйте использование global и nonlocal в комментариях
- Старайтесь минимизировать использование глобальных переменных
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
💩 Тут вы лайки ставить можете, а под видео нет

🤦‍♂️🤦‍♂️🤦‍♂️
1110000 1101111 1110011 1110100 1100001 1110110 100111 100000 1101100 1101001 1101011 1100101
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1321🤔1
Что выдаст код выше?
Anonymous Quiz
50%
True
19%
5
4%
3
21%
Error
6%
Не знаю
👍8
Python Hub - сборище Питонистов
Photo
Разбор выражения x > y and x or y👨‍💻
Вычисление x > y
x = 5, y = 3
x > y возвращает True.

Вычисление x > y and x:
x > y равно True, поэтому результатом and будет второй операнд — x (равно 5).

Вычисление (x > y and x) or y:
Результат (x > y and x) равен 5.
5 является "истинным" значением, поэтому оператор or возвращает первый операнд — 5.

Итоговый результат:
Значение переменной z становится равным 5, и это значение выводится на экран.
👍4🤔2
💾 MongoDB + Python: твой проект на стероидах

Ты всё еще хранишь данные в SQLite, а может, ковыряешься с PostgreSQL? 😅
Давай поговорим про MongoDB — NoSQL-базу, которая может прокачать твой Python-проект за пару строчек кода.

🔍 Зачем вообще MongoDB?

MongoDB — это документо-ориентированная база данных, где данные хранятся в формате JSON-подобных документов (BSON).
Представь, что можешь запихнуть любой Python-словарь прямо в базу, без лишних "таблиц", "схем" и всей этой SQL-бюрократии.

Идеально для:

➡️ Быстрого старта проектов
➡️ Гибких структур данных (например, если у разных пользователей — разные поля)
➡️ Прототипирования и MVP

📦 Установка и подключение

1. Установи библиотеку:
pip install pymongo


2. Простой пример подключения:
from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/")
db = client["my_database"]
collection = db["users"]

collection.insert_one({"name": "Alice", "age": 30})
print(collection.find_one({"name": "Alice"}))



🤔 MongoDB vs SQLite vs PostgreSQL — кто победит?

| MongoDB    | NoSQL | Гибкость, масштабируемость 💡 | Нет SQL, не для сложных связей |

| SQLite     | SQL   | Встроен, легкий, zero setup ⚙️| Не годится для больших данных  |

| PostgreSQL | SQL   | Мощный, строгий, надёжный 🏗  | Требует настройки и схем       |


🧠 Вывод:

Берешь MongoDB, если тебе нужна гибкость, динамика и хочешь двигаться быстро.
SQLite — хорош для тестов и мини-приложений.
PostgreSQL — топ для enterprise-решений, где важна строгость, связи и контроль.

📚 На заметку

* Используй ORM MongoEngine для MongoDB, если хочешь больше "структуры"
* Mongo отлично себя чувствует на Heroku, Atlas и в Docker
* Можно спокойно хранить JSON, массивы, вложенные документы — и никаких JOIN'ов 😎


🎯 Итого

MongoDB + Python = 🔥 combo.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🐳 Docker — в чём магия контейнеров и почему это 🔥 must-have❗️

Слышал про Docker, но до сих пор не понял, зачем он нужен? Или думаешь, что это «что-то для DevOps»?
Сейчас всё разложу по полочкам — будет понятно даже если ты только начал кодить 👇

🎁 Представь: твой проект — это коробка с Lego

Ты собрал красивый замок (проект), поставил его на стол (твой комп). Всё работает.

Но теперь ты хочешь:

➡️Перекинуть замок другу — и у него не хватает деталей (зависимостей).
➡️Поставить его на полку в другой комнате — и там другой размер стола (окружение).
➡️Запустить сразу 10 таких замков — и вдруг всё ломается.

Docker решает это навсегда.

🐳 Что такое Docker?

Это контейнеризация.
Docker упаковывает твой проект со всеми зависимостями: библиотеками, окружением, системными настройками — и превращает в контейнер, который можно запускать где угодно.

📦 Контейнер — это как мини-компьютер внутри твоего компа, где всё настроено именно под твой проект.

Зачем нужен Docker?

🚫 Больше никаких “у меня не работает, а у тебя работает”
⚙️ Всё окружение проекта — в одной команде docker run
🌍 Переезд на сервер — в пару кликов
🧪 Можно тестить, не ломая свою систему
🔁 Легко клонировать проекты и передавать команде
🔐 Изоляция = безопасность

🔥 Пример: Python-проект с Flask

Обычно:

pip install flask
python app.py


С Docker:

FROM python:3.10
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]


Затем:

docker build -t myapp .
docker run -p 5000:5000 myapp


📦 И вуаля! Flask-приложение запускается даже на пустом сервере.

➡️Почему тебе стоит начать с Docker уже сегодня?

➡️Он сэкономит тебе часы — буквально.
➡️Ты начнёшь думать как профессиональный разработчик.
➡️И это must-have навык в любом резюме.

👍 лайк, если интересна тема докера и нужно больше примеров и деталей
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
🧠 Docker — чуть глубже, но всё так же понятно

или: что вообще такое контейнер, образ и volume?

👀 Пост с интро про Docker собрал много лайков — значит, тема зашла!
А теперь давай разберёмся, как это всё реально работает, и зачем вообще столько терминов.


🧱 Контейнер, образ, volume… эээ, что?

Поясняю простым языком 👇

➡️ Образ (image)

Это как заготовка для пиццы — рецепт, ингредиенты, всё по списку.

📦 Пример: ты делаешь образ на базе Python 3.11, с Flask и твоими файлами.
Он не запущен, он просто лежит — готов к использованию.

➡️ Контейнер (container)

Это как пицца в печи — вот он, запущенный проект.

📌 Контейнер создаётся на основе образа.
Ты можешь из одного образа запускать 10 контейнеров — каждый будет отдельным экземпляром.

➡️ Volume

Это как внешний жёсткий диск, куда контейнер сохраняет данные.

💾 Пример: у тебя внутри контейнера база данных. Без volume — данные пропадут при остановке.
С volume — всё сохранится между перезапусками.

😐 Кейсы из жизни:

📍 Кейс 1: “У нас баг только на проде”

Ты запускаешь один и тот же контейнер на dev и prod. Всё одинаково.
Проблема? Возможно, прод-контейнер не подключен к нужному volume, или использует старый образ.

📍 Кейс 2: “Нужен Postgres для проекта”

С Docker тебе не нужно ставить Postgres себе на ноут.
Ты просто делаешь:

docker run --name mydb -e POSTGRES_PASSWORD=123 -d postgres


И он работает — в контейнере, изолированно.
Никакого конфликта с системой.

📍 Кейс 3: “Бэкаперим данные”

Ты монтируешь volume, и теперь база хранится не внутри контейнера, а снаружи.
Можно делать бэкапы, переносить между машинами — как хочешь.

🤔 А что такое docker-compose?

Если у тебя не один контейнер, а несколько (например, веб-приложение + база + redis) — писать по 100 команд неудобно.

📄 docker-compose.yml — это файл, который описывает всё сразу:

какие образы запускать
какие порты пробросить
какие volume использовать
как всё связать между собой


💬 И ты запускаешь всё одной командой:

docker-compose up


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

Продложаем про докер?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83