ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

🐍 Укус питона 🐍

🐍 Укус питона 🐍

Открыть в Telegram

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @tg_adminisrator 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython

Больше
2 334
Подписчики
Нет данных24 часа
-117 дней
-3730 дней

Загружаем данные

Привлечение подписчиков
окт. '26
октябрь '260
в 0 каналах
сентябрь '260
в 0 каналах
Get PRO
август '260
в 0 каналах
Get PRO
июль '260
в 0 каналах
Get PRO
июнь '260
в 0 каналах
Get PRO
май '260
в 0 каналах
Get PRO
апрель '260
в 0 каналах
Get PRO
март '26
+2
в 0 каналах
Get PRO
февраль '26
+2
в 0 каналах
Get PRO
январь '26
+5
в 0 каналах
Get PRO
декабрь '25
+1
в 0 каналах
Get PRO
ноябрь '25
+3
в 0 каналах
Get PRO
октябрь '25
+5
в 0 каналах
Get PRO
сентябрь '25
+5
в 0 каналах
Get PRO
август '25
+7
в 0 каналах
Get PRO
июль '25
+6
в 0 каналах
Get PRO
июнь '25
+4
в 0 каналах
Get PRO
май '25
+3
в 0 каналах
Get PRO
апрель '25
+53
в 0 каналах
Get PRO
март '25
+9
в 0 каналах
Get PRO
февраль '25
+11
в 0 каналах
Get PRO
январь '25
+10
в 0 каналах
Get PRO
декабрь '24
+8
в 0 каналах
Get PRO
ноябрь '24
+9
в 0 каналах
Get PRO
октябрь '24
+9
в 0 каналах
Get PRO
сентябрь '24
+15
в 0 каналах
Get PRO
август '24
+11
в 0 каналах
Get PRO
июль '24
+15
в 0 каналах
Get PRO
июнь '24
+10
в 0 каналах
Get PRO
май '24
+20
в 0 каналах
Get PRO
апрель '24
+17
в 0 каналах
Get PRO
март '24
+25
в 0 каналах
Get PRO
февраль '24
+18
в 1 каналах
Get PRO
январь '24
+12
в 0 каналах
Get PRO
декабрь '23
+7
в 1 каналах
Get PRO
ноябрь '23
+232
в 8 каналах
Get PRO
октябрь '23
+13
в 1 каналах
Get PRO
сентябрь '23
+14
в 0 каналах
Get PRO
август '23
+18
в 0 каналах
Get PRO
июль '23
+21
в 0 каналах
Get PRO
июнь '23
+9
в 0 каналах
Get PRO
май '23
+17
в 0 каналах
Get PRO
апрель '23
+27
в 0 каналах
Get PRO
март '23
+48
в 0 каналах
Get PRO
февраль '23
+50
в 0 каналах
Get PRO
январь '23
+77
в 0 каналах
Get PRO
декабрь '22
+359
в 0 каналах
Get PRO
ноябрь '22
+259
в 0 каналах
Get PRO
октябрь '22
+823
в 0 каналах
Get PRO
сентябрь '22
+1 769
в 0 каналах
Get PRO
август '22
+1 898
в 0 каналах
Дата
Привлечение подписчиков
Упоминания
Каналы
26 октября0
25 октября0
24 октября0
23 октября0
22 октября0
21 октября0
20 октября0
19 октября0
18 октября0
17 октября0
16 октября0
15 октября0
14 октября0
13 октября0
Посты канала
Массивы в pattern matching. В качестве шаблонов также могут выступать массивы. Подобным шаблоны также могут содержать либо ко
Массивы в pattern matching. В качестве шаблонов также могут выступать массивы. Подобным шаблоны также могут содержать либо конкретные значения, либо переменные, которые передаются элементы массивов, либо символ прочерка _, если элемент массива не важен. В данном случае функция print_people принимает массив, который, как предполагается, состоит из трех элементов, рассмотрим их в следующей части. 🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы

2
👩‍💻 Динамическое создание классов — метапрограммирование в чистом виде В Python классы — это тоже объекты, и их можно создавать "на лету" с помощью функции type(). Это открывает путь к динамическому API, автоматическим моделям и DSL. ➡️ Пример: def make_model(name, **fields): return type(name, (object,), fields) User = make_model("User", name="Анна", age=25) print(User.name) # Анна admin = User() admin.role = "admin" print(admin.role) # admin 📌 Здесь type() создаёт новый класс User прямо во время исполнения.
236
3
Ответ:
225
4
Что выведет код? x = 0 def outer(): x = 1 def inner(): nonlocal x x += 1 return x print("A", inner(), x) x = 5 print("B", inner(), x) outer() print("G", x)
194
5
Нет текста...
200
6
👩‍💻 Контракты через аннотации — не просто подсказки типов Аннотации типов (type hints) — это не только помощь IDE. С их помощью можно внедрять контроль логики исполнения — проверять типы, значения и инварианты прямо во время работы программы. ➡️ Пример: from typing import get_type_hints def enforce_types(func): hints = get_type_hints(func) def wrapper(*args, **kwargs): for name, arg in zip(hints, args): if not isinstance(arg, hints[name]): raise TypeError(f"{name} должен быть {hints[name].__name__}") return func(*args, **kwargs) return wrapper @enforce_types def greet(name: str, age: int): print(f"{name}, {age}") greet("Анна", 25) # ✅ greet("Анна", "25") # ❌ TypeError 📌 Здесь аннотации становятся частью исполняемого контракта, а не просто документацией.
193
7
👩‍💻 WeakRef — как избежать утечек памяти в Python Иногда объект больше не нужен, но на него всё ещё ссылаются другие части программы. Обычная ссылка удерживает объект в памяти, а слабая ссылка (weak reference) — нет. Она не мешает сборщику мусора удалить объект, если больше нет сильных ссылок ➡️ Пример: import weakref class Data: def __init__(self, name): self.name = name def __del__(self): print(f"{self.name} удалён") obj = Data("Test") ref = weakref.ref(obj) print(ref()) # <__main__.Data object at ...> del obj print(ref()) # None — объект собран GC 📌 weakref.ref() создаёт слабую ссылку: объект может быть удалён, даже если ссылка ещё существует.
164
8
Ответ:
159
9
Что выведет код? import itertools lst = [[1, 2], [3]] it = itertools.chain.from_iterable(lst) print(next(it)) lst.append([4, 5]) print(list(it))
159
10
Нет текста...
170
11
👩‍💻 Протокол дескрипторов — скрытый механизм свойств и ORM В Python за @property, staticmethod, classmethod и даже ORM-поля стоит единый механизм — дескрипторы. Это объекты, которые управляют доступом к атрибутам через методы __get__, __set__, __delete__ ➡️ Пример: class LoggedAttribute: def __init__(self, name): self.name = name def __get__(self, instance, owner): value = instance.__dict__.get(self.name) print(f"Получено {self.name} = {value}") return value def __set__(self, instance, value): print(f"Изменено {self.name} = {value}") instance.__dict__[self.name] = value class User: age = LoggedAttribute("age") u = User() u.age = 30 print(u.age) 📌 При обращении к u.age срабатывают методы дескриптора, а не прямой доступ к атрибуту.
161
12
👩‍💻 Протокол итерации — как работает цикл for под капотом В Python любой объект можно сделать итерируемым, если он реализует протокол итерации — методы __iter__() и __next__(). Это основа работы for, генераторов, списковых включений и даже файлов ➡️ Пример: class Counter: def __init__(self, limit): self.limit = limit self.value = 0 def __iter__(self): return self def __next__(self): if self.value < self.limit: self.value += 1 return self.value raise StopIteration for i in Counter(3): print(i) # 1 2 3 📌 Цикл for просто вызывает next() до тех пор, пока не появится StopIteration.
147
13
Ответ:
153
14
Что выведет код? class A: def __eq__(self, o): return isinstance(o, A) class B: def __eq__(self, o): return isinstance(o, B) __hash__ = object.__hash__ s = set() try: s.add(A()) except TypeError: print("A") b = B() s.add(b) print("B", b in s)
164
15
❓ Зачем используется метод replace() в Python и когда его применять? Метод replace() возвращает новую строку, в которой все вхождения указанной подстроки заменены на другую. Это удобный способ быстро изменить текст без сложных регулярных выражений. ✅Пример: text = "Python is hard, but Python is fun!" new_text = text.replace("Python", "Coding") print(new_text) # ➜ Coding is hard, but Coding is fun! 📌В этом примере replace() заменяет все вхождения слова "Python" на "Coding" replace() удобно использовать при очистке данных, форматировании строк, замене символов и шаблонов в текстах. Метод не изменяет исходную строку, что делает его безопасным для повторного использования данных
151
16
Нет текста...
196
17
👩‍💻 Мемоизация — ускорение функций без переписывания логики Мемоизация — это техника кэширования результатов функций. Если функция вызывается с теми же аргументами, результат возвращается из памяти, а не вычисляется заново ➡️ Пример: from functools import lru_cache @lru_cache(maxsize=None) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) print(fib(35)) # быстро! 📌 Здесь @lru_cache запоминает все вызовы fib(). Без него вычисление числа Фибоначчи 35 заняло бы секунды, а с ним — доли миллисекунды.
222
18
Ответ:
199
19
Что выведет код? import asyncio async def worker(): await asyncio.sleep(0.05) return "ok" async def main(): t = asyncio.create_task(worker()) try: await asyncio.wait_for(asyncio.shield(t), timeout=0.01) except asyncio.TimeoutError: print("timeout") print(t.cancelled(), t.done()) print(await t) asyncio.run(main())
197
20
Нет текста...
167