Python for everyboby
1.7K subscribers
23 photos
22 links
Download Telegram
🧑‍🎓 В чем разница между операторами is и ==

В Python есть два оператора == и is , которые используются для сравнения. Может показаться, что они работают одинаково, но это не так.

✏️ Оператор == проверяет равенство значений, то есть он оценивает, являются ли значения двух объектов одинаковыми. При этом сами объекты могут храниться в совершенно разных ячейках памяти.

lst1 = [1, 2, 3]
lst2 = [1, 2, 3]
lst3 = lst1

print(lst1 == lst2) # True
print(lst1 == lst3) # True
print(lst2 == lst3) # True
print(id(lst1) == id(lst2)) # False
print(id(lst1) == id(lst3)) # True
print(id(lst2) == id(lst3)) # False


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

lst1 = [1, 2, 3]
lst2 = [1, 2, 3]
lst3 = lst1

print(lst1 is lst2) # False
print(lst1 is lst3) # True
print(lst2 is lst3) # False
👍233
🔝 Самые популярные СУБД в 2025 году
🔝 🔝 🔝Самые популярные СУБД в начале 2025 года

СУБД (Системы управления базами данных) являются основой современных информационных технологий, обеспечивая хранение, управление и доступ к данным. На рынке представлено огромное количество различных СУБД, и сервис db-engines.com/en/ поможет разобраться в этом многообразии.

Более того, DB-Engines ведет собственный рейтинг популярности СУБД, который обновляется регулярно. На январь 2025 года пятерка самых популярных систем выглядит следующим образом:

1 место - Oracle: реляционная, мульти-модельная СУБД, поддерживающая документное хранение, графовые базы данных, RDF-хранилища, пространственные данные и векторные функции. Широко используется в корпоративных приложениях благодаря своей надежности и масштабируемости.

2 место - MySQL: открытая реляционная СУБД, также поддерживающая документное хранение и пространственные данные. Популярна среди веб-разработчиков и используется в многочисленных веб-приложениях и онлайн-сервисах.

3 место - Microsoft SQL Server: реляционная, мульти-модельная СУБД от Microsoft, включающая поддержку документарного хранения, графовых баз данных и пространственных данных. Интегрируется с другими продуктами Microsoft и широко применяется в бизнес-среде.

4 место - PostgreSQL: открытая реляционная, мульти-модельная СУБД, поддерживающая документное хранение, графовые базы данных, пространственные данные и векторные функции. Известна своей расширяемостью и соответствием стандартам SQL, что делает ее популярной среди разработчиков и исследователей.

5 место - MongoDB: Документно-ориентированная, мульти-модельная СУБД, поддерживающая хранение пространственных данных, функции поиска, временные ряды и векторные данные. Предназначена для работы с неструктурированными данными и широко используется в приложениях, требующих гибкости в структуре данных.

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

💬 Поделитесь в комментариях с какими СУБД вам доводилось работать
👍3
🚀 Продолжай прокачивать Python со скидкой до 30%! 🔥

Ты уже освоил основы программирования и хочешь подняться на новый уровень? Тогда лови возможность углубить свои знания и расширить навыки с нашими продвинутыми курсами!

⚡️ Скидки до 30% только до 9 февраля на самые актуальные курсы:

☑️ ООП: Объектно-ориентированное программирование на Python

☑️ Функциональное программирование на Python

☑️ Продвинутый python: заряди свои батарейки

☑️ Инди курс по Pygame - учимся создавать свои игры

☑️ Django, потанцуем?

Время ограничено! Скидка действует только до 9 февраля.

👉 Успей улучшить свои навыки и выделиться среди профессионалов! Выбирай курс и начни прокачку уже сегодня!
🔥4
🐍 Генераторы списков в Python (List Comprehensions)

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

📚 Пример: Создание списка квадратов чисел

Допустим, мы хотим создать список квадратов чисел от 1 до 10. Вот как это сделать с использованием списковых включений:
# Классический способ с использованием цикла
squares = []
for i in range(1, 11):
squares.append(i ** 2)
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# Генератор списка
squares = [i ** 2 for i in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Результат одинаковый, но вторая версия гораздо короче и проще для понимания.

🌟 Фильтрация данных

С помощью списковых включений можно легко добавлять условия. Например, создадим список квадратов только для чётных чисел:
even_squares = [i ** 2 for i in range(1, 11) if i % 2 == 0]
print(even_squares) # [4, 16, 36, 64, 100]


Здесь if i % 2 == 0 фильтрует числа, оставляя только чётные.

🛠 Практическое применение: Перевод строк в верхний регистр

Допустим, у нас есть список строк, и мы хотим преобразовать их в верхний регистр:
words = ["пример", "использования", "list", "comprehension"]
uppercase = [word.upper() for word in words]
print(uppercase) # ['ПРИМЕР', 'ИСПОЛЬЗОВАНИЯ', 'LIST', 'COMPREHENSION']


💡 Почему это важно?

Генераторы списков:

✔️ Уменьшают количество строк кода.
✔️ Повышают читаемость.
✔️ Работают быстрее, чем традиционные циклы, так как оптимизированы внутри Python.

🚀 Хотите узнать больше?

💬 Записывайтесь на бесплатный Инди-курс программирования на Python уже сегодня и сделайте первый шаг к мастерству в Python!
👍11
⚡️ Метаклассы в Python: полный контроль над классами!

💭 Вы когда-нибудь задумывались, кто управляет классами в Python?

Обычные классы создают объекты. Но кто создаёт сами классы? 🤯

Ответ: Метаклассы. Они позволяют автоматически изменять структуру классов, добавлять новые свойства и даже контролировать создание объектов! Это мощный инструмент, который используют в ORM, веб-фреймворках и крупных проектах.

📚 Что такое метаклассы?

В Python всё является объектом, включая сами классы. Метаклассы — это классы, которые управляют созданием других классов.

🛠 Что они могут делать?

Автоматически модифицировать классы при их объявлении.

Добавлять новые методы и атрибуты.

Проверять корректность классов перед созданием.

Реализовывать шаблоны проектирования (Singleton, ORM, фабрики и т. д.).

📌 Простой пример метакласса

Создадим метакласс Meta, который автоматически добавляет в любой класс метод info() и атрибут category:

class Meta(type):  
def __new__(cls, name, bases, dct):
# Добавляем метод info(), который выводит название класса
dct["info"] = lambda self: f"Это класс {name}"

# Добавляем атрибут category
dct["category"] = "Автоматически создано"

return super().__new__(cls, name, bases, dct)

# Используем метакласс
class MyClass(metaclass=Meta):
pass

obj = MyClass()

# Проверяем, что метод info() добавлен
print(obj.info()) # Это класс MyClass

# Проверяем, что атрибут category добавлен
print(MyClass.category) # Автоматически создано


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


1️⃣ Метакласс Meta наследуется от type, что делает его метаклассом;

2️⃣ В методе __new__ изменяется поведение создаваемого класса:
добавляется метод info(), который выводит имя класса;
добавляется атрибут category, общий для всех классов, использующих этот метакласс.

3️⃣ При создании MyClass все эти изменения автоматически применяются.

🔹 Теперь любой класс, использующий Meta, автоматически получает и метод, и атрибут!

⚙️ Практический пример: Singleton с метаклассом

Одиночка (Singleton) — это шаблон, который гарантирует, что у класса есть только один экземпляр.

class SingletonMeta(type):
_instances = {}

def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super().__call__(*args, **kwargs)
return cls._instances[cls]

class Database(metaclass=SingletonMeta):
def __init__(self, db_name):
self.db_name = db_name

db1 = Database("main.db")
db2 = Database("backup.db")

print(db1 is db2) # True
print(db1.db_name) # main.db
print(db2.db_name) # main.db

Принцип работы SingletonMeta:
— метод call() в метаклассе контролирует создание новых экземпляров;
— если объект уже существует, возвращается существующий экземпляр;
Таким образом, db1 и db2 — это один и тот же экземпляр, несмотря на разные аргументы.

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

🔹 Когда нужно автоматически изменять или проверять классы при их объявлении.
🔹 Когда нужно изменить стандартное поведение создания объектов (например, реализовать Singleton).

🎓 Хотите углубиться в Python?

Метаклассы — это лишь одна из мощных возможностей ООП в Python.

📢 На нашем курсе по Объектно-ориентированному программированию (ООП) мы разберём:

Как создавать свои собственные классы;
Основные принципы ООП такие как инкапсуляция, наследование и полиморфизм;
Метаклассы, декораторы, дескрипторы и многое другое.

🚀 А промокод ЯНВАРЬ даёт скидку на курс!

🎓 Записывайтесь прямо сейчас и прокачивайте навыки Python на новый уровень! 🐍🔥

🔗 Курс ООП в Python: https://stepik.org/a/114354
🔥10👍6
🎉 В преддверии нового курса — СКИДКИ до 30%!

Впереди — запуск нового авторского курса. А пока вы его ждёте, у вас есть отличная возможность прокачать свои знания Python и приобрести уже готовые курсы со скидкой до 30%! 🚀

🎓 Доступные курсы со скидкой:

☑️ Функциональное программирование на Python

☑️ ООП: Объектно-ориентированное программирование на Python

☑️ Продвинутый Python: заряди свои батарейки

☑️ Django, потанцуем?

📌 Все курсы:

Содержат практику, тесты и понятную теорию

Актуальны для последних версий Python

Дают доступ навсегда + сертификат по окончании

💳 Скидка применяется автоматически при переходе по ссылке и оплате!

Акция действует ограниченное время. Успейте записаться и сделать следующий шаг в программировании! 🐍
🔥95
🎉 Грандиозная новогодняя распродажа на курсы по Python!

Начни год с развития и прокачки своих навыков 🧠💻
Скидки до 50% по промокоду JANUARY 🔥

📚 Курсы со скидкой:

🔰 Функциональное программирование на Python

🔧 ООП: Объектно-ориентированное программирование на Python

🌐 Django, потанцуем? 💃

⚡️ Продвинутый Python: заряди свои батарейки 🔋

🧪 Инди курс по Pygame - учимся создавать свои игры

Обратите внимание на программу
Python: базовый минимум🧰

Это универсальный стартовый набор для новичков:
Вы получите доступ сразу к нескольким курсам, объединённым в одну логичную программу.
Пройдя их, вы построите прочную основу и сможете двигаться дальше в любой сфере программирования.

🎁 На этот курс тоже действует скидка по промокоду!

💡 Как применить скидку?

1️⃣ Перейдите по ссылке на нужный курс — цена уже указана со скидкой!
2️⃣ Или при оплате введите промокод: JANUARY

Не упустите возможность — скидка ограничена по времени.
Начните год с выгодного вложения в себя! 🚀
🔥41