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

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

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

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


Здесь мы имеем дело с объектами и ссылками в Python. Когда создается объект класса A (a = A()), переменная a ссылается на этот объект. Затем переменной b присваивается ссылка на тот же объект (b = a). Это означает, что a и b ссылаются на один и тот же объект в памяти.

Когда вызывается метод update через переменную b, он изменяет атрибут x этого объекта, увеличивая его значение на 5. Поскольку a и b ссылаются на один и тот же объект, изменение видно через обе переменные. Таким образом, после выполнения b.update(5) значение x становится равным 15, и вывод будет 15 15.
👍51
Что выдаст код выше?
Anonymous Quiz
34%
3 2
13%
3 3
11%
3 1
22%
Error
20%
Не знаю
👍31
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