ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

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

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

前往频道在 Telegram

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

显示更多
2 334
订阅者
无数据24 小时
-117 天
-3730 天
吸引订阅者
10月 '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