🐍 Укус питона 🐍
رفتن به کانال در Telegram
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @tg_adminisrator 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython
نمایش بیشتر2 334
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-117 روز
-3730 روز
آرشیو پست ها
2 334
🐍 Множественное присваивание в Python
В Python можно сразу присвоить значения нескольким переменным в одной строке. Это удобно и делает код короче.
x, y, z = 1, 2, 3
print(x, y, z) # 1 2 3
Можно использовать для обмена значениями без временной переменной:
a, b = 5, 10
a, b = b, a
print(a, b) # 10 5
✅ Это стандартный приём в Python, который экономит строки и делает код читаемым.2 334
⚙️ Списковые включения (
list comprehensions)
В Python можно создавать списки в одну строку — с помощью списковых включений. Это короче и читаемее, чем for-цикл.
squares = [x**2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
Можно добавить условие:
evens = [x for x in range(10) if x % 2 == 0]
Это базовый, но мощный инструмент в Python.2 334
🐍 Форматированные строки (f-strings) в Python
F-строки — это самый лаконичный способ подставить переменные и выражения прямо внутрь строки. Они появились в Python 3.6 и с тех пор стали стандартом.
Синтаксис простой: перед строкой ставится
f, а внутри фигурных скобок {} можно писать переменные или даже выражения.
name = "Анна"
age = 25
print(f"{name} — {age} лет")
Внутри скобок можно использовать любые валидные выражения:
print(f"{name.upper()} — {age + 5} лет") # АННА — 30 лет
Преимущество f-строк — читаемость и производительность. Они короче и быстрее, чем .format() или конкатенация через +.2 334
🔥 Что такое
slots в Python и зачем он нужен?
slots ограничивает список атрибутов у экземпляров класса, экономя память за счет отказа от dict.
✅ Обычный класс без slots:
class Person:
def init(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
p.city = "New York" # Можно добавить новый атрибут
✅ Класс с slots:
class Person:
slots = ("name", "age") # Разрешены только эти атрибуты
def init(self, name, age):
self.name = name
self.age = age
p = Person("Alice", 25)
p.city = "New York" # ❌ AttributeError: 'Person' object has no attribute 'city'
➕ Плюсы slots
• Экономит память (не создается dict)
• Ускоряет доступ к атрибутам
• Предотвращает создание лишних атрибутов
⚡️ Используйте slots, если нужно много однотипных объектов и важна производительность!2 334
Что делает
@property в Python?
@property превращает метод класса в свойство, позволяя обращаться к нему без скобок.
Пример:
class Person:
def init(self, name):
self._name = name
@property
def name(self):
return self._name
p = Person("Alice")
print(p.name) # Alice (как атрибут, но с логикой)
Зачем нужно?
• Позволяет использовать методы как атрибуты
• Защищает данные от прямого изменения
• Позволяет добавить логику без изменения интерфейса
⚡️ @property делает код чище и безопаснее, улучшая инкапсуляцию!2 334
⚙️ Как я запускаю 15+ самых разных ИИ на своей машине — open-source, self-hosted, с HTTP-доступом
Показываю, как мой BrainBox запускает генерацию, озвучку и распознавание локально — без боли и зависимости от облаков. Даже если вы не знаете Python.
#Полезное
2 334
↔️ Разница между
is и == в Python
🔹 == (равенство) проверяет, равны ли значения объектов:
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True (значения одинаковые)
🔹 is (идентичность) проверяет, указывают ли переменные на один и тот же объект в памяти:
print(a is b) # False (разные объекты)
🔹 Но для immutable-объектов (например, int, str, tuple) Python кеширует значения:
x = 256
y = 256
print(x is y) # True (указывают на один объект)
✅ Используйте == для сравнения значений и is для проверки, ссылаются ли переменные на один объект в памяти!2 334
🔥
*args и **kwargs в Python
🔹 *args — передает позиционные аргументы как кортеж:
def add_numbers(*args):
return sum(args)
print(add_numbers(1, 2, 3)) # 6
🔹 **kwargs — передает именованные аргументы как словарь:
def greet(**kwargs):
print(kwargs)
greet(name="Alice", age=25) # {'name': 'Alice', 'age': 25}
✅ Используйте *args для списка значений и **kwargs для гибких параметров!2 334
🔥 Mutable vs Immutable в Python
В Python все данные — это объекты, и они делятся на изменяемые (mutable) и неизменяемые (immutable).
🔹 Неизменяемые (immutable): нельзя изменить после создания
✅
int, float, str, tuple, frozenset
x = "hello" x += " world" # Создается новый объект, а не изменяется старый🔹 Изменяемые (mutable): можно изменять без создания нового объекта ✅
list, dict, set, bytearray
lst = [1, 2, 3]
lst.append(4) # Список изменяется в той же области памяти
⚠️ Важный нюанс
Передача изменяемых объектов в функцию может привести к неожиданным изменениям:
def modify_list(lst):
lst.append(99) # Изменяет оригинальный список!
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # [1, 2, 3, 99]
✅ Вывод:
• Используйте tuple, если данные не должны изменяться.
• Будьте осторожны с изменяемыми объектами при передаче в функции.
• Если нужно копирование, используйте .copy() или deepcopy().2 334
⚙️ Отладка с sys._getframe в Python
Сегодня в коротком формате разберемся с тем, что же творится внутри CPython, когда функции вызывают друг друга: sys._getframe, f_back, f_globals, f_locals, а также создадим свои декораторы.
#Полезное
2 334
🖥 Друзья, если вы только начинаете осваивать Python или уже перешли к фреймворкам и сложным библиотекам, вам помогут авторские материалы многолетнего разработчика и преподавателя Python Дмитрия Читалова.
Уже размещены:
✅Основы Python
✅Продвинутый Python
✅Алгоритмы и структуры данных
❗️Сейчас еженедельно выкладываются уроки по Архитектуре и паттернам проектирования
Подписаться можно здесь.
