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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
2 334
Obunachilar
Ma'lumot yo'q24 soatlar
-117 kunlar
-3730 kunlar
Postlar arxiv
👩‍💻 Как Python ищет переменные (LEGB Rule) Когда ты обращаешься к переменной, Python ищет её не хаотично, а строго по цепочке LEGB: Local → Enclosing → Global → Built-in ➡️ Пример:
x = "глобальная"

def outer():
    x = "замыкание"
    def inner():
        x = "локальная"
        print(x)
    inner()

outer()

локальная
Если убрать x = "локальная", Python возьмёт x из ближайшей внешней области — "замыкание". Если и там нет — из глобальной.
📌 Понимание LEGB помогает избегать неожиданных конфликтов имён и багов при работе с функциями и замыканиями

Ответ:
Anonymous voting

Что выведет код?
Что выведет код?

👩‍💻 Замыкания (closures) — функции, которые помнят контекст В Python функция может «запомнить» значения из внешней области, даже если она уже не существует.
Это и есть замыкание — ключевой инструмент для инкапсуляции логики и данных без классов
➡️ Пример:
def make_multiplier(factor):
    def multiply(x):
        return x * factor
    return multiply

double = make_multiplier(2)
print(double(5))  # 10
multiply помнит значение factor, даже после завершения make_multiplier. То есть double — это функция, замкнувшая внутри себя factor = 2.
📌 Замыкания лежат в основе декораторов, фабрик функций и ленивых вычислений. Понимание этой концепции — шаг от простого Python к "питонистому" коду

👩‍💻 Как Python хранит переменные: ссылки, а не значения В Python переменные — это не “коробки с данными”, а имена, указывающие на объекты в памяти.
Когда ты присваиваешь значение, создаётся объект, а имя просто ссылается на него.
➡️ Пример:
x = [1, 2, 3]
y = x
y.append(4)

print(x)  # [1, 2, 3, 4]
print(x is y)  # True
x и y указывают на один и тот же объект — изменения отражаются в обоих. Чтобы создать независимую копию, нужно использовать copy() или модуль copy.
📌 В Python важно понимать: присваивание не копирует данные, а лишь создаёт новую ссылку. Отсюда рождаются большинство «неожиданных» багов у новичков

Ответ:
Anonymous voting

Что выведет код?
Что выведет код?

👩‍💻 Мутабельность vs Иммутабельность в Python В Python объекты делятся на изменяемые (mutable) и неизменяемые (immutable).
Это фундамент — от него зависят поведение списков, кортежей и даже ошибки с «копиями»
➡️ Пример:
a = [1, 2, 3]
b = a
b.append(4)

print(a)  # [1, 2, 3, 4]
print(a is b)  # True
b не копия, а ссылка на тот же объект в памяти. Изменяемые типы (list, dict, set) ведут себя именно так. А вот неизменяемые (int, str, tuple) при изменении создают новый объект.
📌 Понимание мутабельности — ключ к тому, чтобы не ломать данные «по ссылке» и писать предсказуемый код

👩‍💻 enumerate — индексы без лишнего кода enumerate() добавляет индекс к каждому элементу итерируемого объекта.
Чаще всего используется в циклах вместо range(len(...)).
➡️ Пример:
fruits = ["яблоко", "банан", "груша"]

for i, fruit in enumerate(fruits, start=1):
    print(i, fruit)

1 яблоко  
2 банан  
3 груша
📌 Код становится чище и читаемее, особенно при работе со списками и строками

Ответ:
Anonymous voting

Что выведет код?
Что выведет код?

Зачем используется метод get() у словарей в Python и когда его применять? Метод get() возвращает значение по ключу, если он существует, и безопасно возвращает заданное значение по умолчанию, если ключ не найден. Это предотвращает ошибки при доступе к несуществующим ключам. Пример:
user = {"name": "Alice", "age": 25}

print(user.get("age"))          # ➜ 25
print(user.get("city", "N/A"))  # ➜ N/A
📌В этом примере get() безопасно возвращает значение "N/A", если ключ city отсутствует.
get() удобно использовать при работе с данными из API, JSON, конфигурациями или базами, где некоторые ключи могут отсутствовать. Это делает код надёжнее и чище, чем использование прямого доступа через []

👩‍💻 collections.Counter — подсчёт элементов Counter из модуля collections автоматически считает количество вхождений элементов в коллекции. ➡️ Пример:
from collections import Counter

fruits = ["яблоко", "банан", "яблоко", "груша", "банан", "яблоко"]
count = Counter(fruits)

print(count)          # Counter({'яблоко': 3, 'банан': 2, 'груша': 1})
print(count.most_common(1))  # [('яблоко', 3)]
📌 Удобно для анализа данных, статистики и поиска самых частых элементов

Ответ:
Anonymous voting

Что выведет код?
Что выведет код?