🐍 Укус питона 🐍
2.47K subscribers
1.07K photos
24 videos
285 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
👩‍💻 Дескрипторы в Python — сердце свойств и ORM

Дескрипторы — это объекты, которые управляют доступом к атрибутам других классов через методы __get__, __set__ и __delete__.

Они лежат в основе property, @staticmethod, @classmethod и ORM вроде Django.


➡️ Пример:

class Celsius:
def __get__(self, instance, owner):
return instance._temp

def __set__(self, instance, value):
if value < -273.15:
raise ValueError("Температура ниже абсолютного нуля!")
instance._temp = value


class Temperature:
temp = Celsius()


t = Temperature()
t.temp = 25
print(t.temp) # 25


📌 Дескрипторы — это низкоуровневая магия, на которой построен весь механизм Python-свойств.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Генераторы — ленивые последовательности без лишней памяти

Генераторы в Python создают значения "на лету", без хранения всего списка в памяти.

Это делает их идеальными для работы с большими объёмами данных и потоками


➡️ Пример:

def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a + b

gen = fibonacci()
for _ in range(5):
print(next(gen))
# 0 1 1 2 3


📌 Здесь yield превращает функцию в генератор, который "запоминает" состояние между вызовами.
Please open Telegram to view this post
VIEW IN TELEGRAM