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

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

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
🔥 *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 для гибких параметров!
↔️ Разница между 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 для проверки, ссылаются ли переменные на один объект в памяти!
🔥 lambda — короткие функции в Python

lambda — это анонимная функция, которая записывается в одну строку и не требует def. Используется там, где нужна простая операция без имени функции.

Пример (обычная функция vs. lambda):

def square(x):
return x ** 2

square_lambda = lambda x: x ** 2

print(square(5)) # 25
print(square_lambda(5)) # 25


🔹 Где используется?

1️⃣ map() — Применение функции к списку
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, nums))
print(squared) # [1, 4, 9, 16]


2️⃣ filter() — Фильтрация данных
even = list(filter(lambda x: x % 2 == 0, nums))
print(even) # [2, 4]


3️⃣ sorted() — Сортировка по ключу
pairs = [(1, 'one'), (3, 'three'), (2, 'two')]
pairs.sort(key=lambda x: x[0])
print(pairs) # [(1, 'one'), (2, 'two'), (3, 'three')]


⚡️ Когда использовать lambda?

Когда функция простая и короткая
Когда она нужна один раз

Не стоит использовать lambda, если логика сложная – лучше писать def.
👍2
Немножко о реализации set в Python

Почему set в Python не всегда такой хаотичный, как кажется? Разбираемся, как множества устроены под капотом, как работают хэш-таблицы и почему порядок элементов иногда оказывается предсказуемым.
Что делает @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
🔥 Что такое 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, если нужно много однотипных объектов и важна производительность!
🐍 Что делает enumerate() в Python?

enumerate() добавляет индекс при итерации по списку.

Пример:
fruits = ["🍎", "🍌", "🍇"]
for i, fruit in enumerate(fruits, start=1):
print(i, fruit)

1 🍎
2 🍌
3 🍇


Зачем нужно?

Упрощает работу с индексами в циклах
Делает код читаемым без range(len())

Используйте enumerate() вместо range(len()) для чистого и Pythonic-кода!
Так и работаем
🔗 zip() в Python: удобное объединение данных

zip() соединяет элементы из нескольких последовательностей попарно, создавая кортежи с одинаковыми индексами.

Пример:

keys = ["name", "age", "city"]
values = ["Alice", 25, "NY"]

data = dict(zip(keys, values))
print(data) # {'name': 'Alice', 'age': 25, 'city': 'NY'}


🔹 Как работает zip()?

• Комбинирует списки в пары.
• Завершается, когда самый короткий список заканчивается.
• Использует итератор, экономя память.

🔹 Где полезен?

• Генерация словарей из двух списков.
• Итерация по нескольким последовательностям одновременно.
• Упрощение работы с табличными данными.

Используйте zip() для компактного и читаемого кода!
👍2
🎯 set() в Python: работа с уникальными данными

set() — это неупорядоченная коллекция уникальных элементов, которая позволяет легко убирать дубликаты и быстро выполнять операции над множествами.

Пример:

numbers = [1, 2, 2, 3, 4, 4, 5]
unique_numbers = set(numbers)
print(unique_numbers) # {1, 2, 3, 4, 5}


🔹 Ключевые свойства set()

• Хранит только уникальные элементы.
• Поддерживает быстрый поиск (O(1)).
• Не сохраняет порядок элементов.

🔹 Основные операции:

• Объединение: set1 | set2
• Пересечение: set1 & set2
• Разность: set1 - set2

⚡️ Используйте set() для удаления дубликатов и эффективной работы с уникальными данными!
😁3😢2❤‍🔥1