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

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

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Что выведет следующий код?
👩‍💻 pathlib — современная работа с путями

Модуль pathlib упрощает работу с файлами и папками, заменяя старый os.path.

Объекты Path интуитивнее и поддерживают операции как с обычными переменными.


➡️ Пример:

from pathlib import Path

path = Path("example.txt")

if path.exists():
print("Файл существует")
else:
print("Файла нет")


📌 pathlib работает кроссплатформенно, поддерживает удобное объединение путей (/), чтение, запись и обход директорий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 enumerate + start — нумерация с любого числа

Функция enumerate() позволяет перебирать элементы с индексами, а параметр start задаёт, с какого числа начинать счёт.

➡️ Пример:

tasks = ["Купить хлеб", "Выучить Python", "Сделать проект"]

for i, task in enumerate(tasks, start=1):
print(f"{i}. {task}")

1. Купить хлеб
2. Выучить Python
3. Сделать проект


📌 Удобно для списков задач, меню и любых случаев, где индексация должна начинаться не с нуля.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что выведет следующий код и почему?
👩‍💻 zip_longest — объединение списков разной длины

Функция zip_longest() из модуля itertools объединяет несколько последовательностей, заполняя недостающие значения указанным значением.

➡️ Пример:

from itertools import zip_longest

names = ["Анна", "Борис"]
scores = [90]

for name, score in zip_longest(names, scores, fillvalue="—"):
print(name, score)

Анна 90
Борис —


📌 Полезно при работе с данными разной длины, чтобы не потерять элементы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 else после цикла — неочевидная фишка Python

В Python можно использовать else не только с if, но и с циклами for и while.

Он выполняется только если цикл завершился без break.


➡️ Пример:

nums = [1, 3, 5, 7]

for n in nums:
if n % 2 == 0:
print("Есть чётное")
break
else:
print("Все числа нечётные")

Все числа нечётные


📌 Удобно для поиска: если ничего не найдено — выполнится else. Работает как "не прервали — тогда делай...".
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
👩‍💻 unpacking оператор * для распаковки

Оператор * позволяет распаковывать последовательности в отдельные элементы прямо в выражениях или вызовах функций

➡️ Пример:

nums = [1, 2, 3]
print(*nums) # 1 2 3

a, *middle, b = [10, 20, 30, 40, 50]
print(a, middle, b) # 10 [20, 30, 40] 50


📌 Полезно для передачи аргументов, объединения списков и элегантного извлечения частей коллекций.
Please open Telegram to view this post
VIEW IN TELEGRAM
Зачем используется функция type() в Python и когда её применять?

Функция type() возвращает тип переданного объекта. Это удобно для отладки, валидации данных и динамического изменения поведения программы в зависимости от типа.

Пример:

value = 42
print(type(value))
# ➜ <class 'int'>


В этом примере type() показывает, что переменная value является целым числом (int).

type() удобно использовать при проверке типов в отладке, логировании, написании универсальных функций и метаклассов. Она помогает писать более надёжный и предсказуемый код, особенно в больших проектах
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
👩‍💻 contextlib.suppress — игнорирование ошибок точечно

Иногда нужно пропустить определённые исключения, не оборачивая код в громоздкий try/except.
Для этого есть suppress() из модуля contextlib.

➡️ Пример:

from contextlib import suppress

data = {"a": 1}

with suppress(KeyError):
print(data["b"]) # Ошибка будет проигнорирована

print("Код продолжает работать")

Код продолжает работать


📌 Удобно, когда ошибка допустима и не требует обработки — например, при удалении файла, который может отсутствовать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 defaultdict — словарь с значениями по умолчанию

defaultdict из модуля collections автоматически создаёт значение для нового ключа, если он ещё не существует.

➡️ Пример:

from collections import defaultdict

data = defaultdict(list)
data["users"].append("Анна")
data["users"].append("Борис")

print(data)

defaultdict(<class 'list'>, {'users': ['Анна', 'Борис']})


📌 Удобно при группировке данных и подсчёте значений — не нужно проверять, есть ли ключ в словаре.
Please open Telegram to view this post
VIEW IN TELEGRAM