uz
Feedback
Python_No_Panic

Python_No_Panic

Kanalga Telegram’da o‘tish

Самый перспективный, полезный и ламповый канал по Python в русскоязычном телеграме! Обучающие посты в хронологическом порядке, посты по софт скиллам и чат, где вам всегда помогут админы и комьюнити. Сотрудничество: @Niik_Whaale

Ko'proq ko'rsatish
2 146
Obunachilar
Ma'lumot yo'q24 soatlar
-37 kunlar
-1330 kunlar
Postlar arxiv
🐍 lambda — краткие анонимные функции в одну строку Иногда нужна функция, но ради одной операции не хочется писать def. В так
🐍 lambda — краткие анонимные функции в одну строку Иногда нужна функция, но ради одной операции не хочется писать def. В таких случаях помогает lambda — анонимные функции в одну строку! 💡 Пример использования:

square = lambda x: x ** 2
print(square(5))  # 25
Результат:
25
🔥 Где полезно? Когда нужно передать функцию в map(), filter(), sorted() Для компактного кода без создания лишних функций 💡 Пример с sorted() и lambda:

words = ["banana", "apple", "cherry", "blueberry"]
sorted_words = sorted(words, key=lambda x: x[-1])  # Сортировка по последней букве
print(sorted_words)
Результат:

['banana', 'apple', 'blueberry', 'cherry']

🔢 Секреты использования sorted() — сортировка с кастомной логикой! Функция sorted() позволяет сортировать список не только п
🔢 Секреты использования sorted() — сортировка с кастомной логикой! Функция sorted() позволяет сортировать список не только по умолчанию, но и с помощью собственной логики сортировки через параметр key. 💡 Пример использования с ключом key:

# Список слов
words = ["banana", "apple", "cherry", "blueberry"]

# Сортируем по длине слова
sorted_words = sorted(words, key=len)

print(sorted_words)
Результат:
['apple', 'banana', 'cherry', 'blueberry']
🔥 Как это работает? sorted() сортирует элементы с использованием функции, переданной в key. В примере мы сортируем по длине каждого слова. Вы можете использовать любую логику для сортировки, например, сортировать по обратному порядку, по первой букве или числовым значениям.

🎨 Цветной вывод с использованием модуля colorama Хотите сделать вывод вашего кода более ярким и заметным? В Python это можно
🎨 Цветной вывод с использованием модуля colorama Хотите сделать вывод вашего кода более ярким и заметным? В Python это можно сделать с помощью модуля colorama, который добавляет цвет к выводу в консоли! 💡 Пример использования:

from colorama import init, Fore

init()  # Инициализация
print(Fore.RED + "Это текст красного цвета!")
print(Fore.GREEN + "А это — зелёный!")
Результат: Текст "Это текст красного цвета!" будет красным Текст "А это — зелёный!" будет зелёным 🎯 Когда это полезно? Удобно для выделения ошибок или важных сообщений в логах Применяется для создания более красочных выводов в консольных приложениях

🌐 Как "пропускать" элементы в цикле с помощью continue? Когда вам нужно пропустить текущую итерацию цикла и перейти к следую
🌐 Как "пропускать" элементы в цикле с помощью continue? Когда вам нужно пропустить текущую итерацию цикла и перейти к следующей, не завершая весь цикл, можно использовать ключевое слово continue. Это полезно, например, когда хотите исключить определённые элементы без прерывания работы цикла. 💡 Пример использования:

for i in range(10):
    if i % 2 == 0:
        continue  # Пропускаем чётные числа
    print(i)
Результат:
1
3
5
7
9
🔥 Когда это удобно? Если нужно исключить некоторые условия без завершения цикла Позволяет сократить код, не используя вложенные if конструкции

📂 Как быстро узнать размер объекта в памяти? sys.getsizeof()! Хотите узнать, сколько памяти занимает переменная? В Python эт
📂 Как быстро узнать размер объекта в памяти? sys.getsizeof()! Хотите узнать, сколько памяти занимает переменная? В Python это можно сделать с помощью sys.getsizeof()! 💡 Пример использования:

import sys

a = 10
b = "Hello, world!"
c = [1, 2, 3, 4, 5]

print(sys.getsizeof(a))  # Размер переменной a
print(sys.getsizeof(b))  # Размер строки b
print(sys.getsizeof(c))  # Размер списка c
Результат (пример):
28  # Размер int
62  # Размер строки
96  # Размер списка
📌 Интересный факт: Пустой список занимает 56 байт, даже если в нем нет элементов! sys.getsizeof() учитывает служебную информацию, поэтому иногда реальный размер данных больше. Используйте это для оптимизации кода и экономии памяти! 🚀

🛠 Как проверить, занята ли нужная переменная? locals() в помощь! Иногда нужно узнать, существует ли переменная в текущей обл
🛠 Как проверить, занята ли нужная переменная? locals() в помощь! Иногда нужно узнать, существует ли переменная в текущей области видимости. Для этого можно использовать locals()! 💡 Пример использования:

name = "Alice"

if "name" in locals():
    print("Переменная 'name' существует!")
else:
    print("Переменная 'name' не найдена.")
Результат:
Переменная 'name' существует!
🔥 Полезно, когда: Нужно избежать ошибок при работе с переменными Отлаживаете код и хотите проверить, какие переменные уже созданы

🔥 Расширенный print() — настраивай вывод под себя! Функция print() в Python может намного больше, чем просто выводить текст.
🔥 Расширенный print() — настраивай вывод под себя! Функция print() в Python может намного больше, чем просто выводить текст. Можно менять разделитель и конец строки! 💡 Пример 1: Задаем кастомный разделитель (sep)

print("Python", "is", "awesome", sep="🔥")
Результат:
Python🔥is🔥awesome
💡 Пример 2: Изменяем конец строки (end)

print("Первая строка", end=" 😎 ")
print("Вторая строка")
Результат:
Первая строка 😎 Вторая строка
🎯 Когда это полезно? sep удобно использовать для форматирования вывода end помогает избежать лишних переводов строк Теперь print() — это не просто вывод, а гибкий инструмент! 🚀

⏳ Как засечь время выполнения кода? timeit в помощь! Хотите узнать, сколько времени занимает выполнение кода? Python предлага
⏳ Как засечь время выполнения кода? timeit в помощь! Хотите узнать, сколько времени занимает выполнение кода? Python предлагает удобный модуль timeit, который точно измеряет производительность. 💡 Пример использования:

import timeit

code = """
result = [x**2 for x in range(1000)]
"""

execution_time = timeit.timeit(code, number=1000)

print(f"Время выполнения: {execution_time:.5f} секунд")
Результат (пример):
Время выполнения: 0.08523 секунд
🔥 Зачем использовать timeit? Точнее, чем time.time(), так как выполняет код многократно Удобен для оптимизации алгоритмов

🎲 Случайный выбор из списка с random.choice() Если нужно выбрать случайный элемент из списка, не нужно писать сложные циклы.
🎲 Случайный выбор из списка с random.choice() Если нужно выбрать случайный элемент из списка, не нужно писать сложные циклы. Просто используйте random.choice()! 💡 Пример использования:

import random

movies = ["🎬 Inception", "🎥 Interstellar", "📽 The Matrix", "🎞 The Dark Knight"]

random_movie = random.choice(movies)

print(f"Сегодня стоит посмотреть: {random_movie}")
Результат (например):
Сегодня стоит посмотреть: 🎞 The Dark Knight
🎯 Дополнительно: random.choices() позволяет выбрать несколько элементов сразу random.sample() выбирает без повторений Используйте random и пусть Python делает выбор за вас! 🎰

🚀 Крутая фишка enumerate() — избавляемся от лишних счетчиков! Часто нужно перебирать список и знать индекс каждого элемента.
🚀 Крутая фишка enumerate() — избавляемся от лишних счетчиков! Часто нужно перебирать список и знать индекс каждого элемента. Вместо того чтобы вручную заводить i = 0 и увеличивать его в цикле, используйте enumerate()! 💡 Пример использования:

fruits = ["🍎 Apple", "🍌 Banana", "🍒 Cherry"]

for index, fruit in enumerate(fruits, start=1):
    print(f"{index}. {fruit}")
Результат:
1. 🍎 Apple
2. 🍌 Banana
3. 🍒 Cherry
🔥 Почему это удобно? Код становится чище и короче Можно сразу задать нужный стартовый индекс (start=1)

🔄 zip() — идеальный способ для параллельного обхода нескольких списков Функция zip() помогает вам одновременно работать с не
🔄 zip() — идеальный способ для параллельного обхода нескольких списков Функция zip() помогает вам одновременно работать с несколькими коллекциями. Она "пакует" их элементы по парам, что удобно, когда нужно итеративно проходить по двум или больше спискам. 💡 Пример использования:

names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 78]

for name, score in zip(names, scores):
    print(f"{name} scored {score}")
Результат:
Alice scored 85
Bob scored 90
Charlie scored 78
🎯 Преимущество: Не нужно использовать индексы для доступа к элементам! zip() "параллельно" соединяет элементы, делая код более читаемым и компактным.

🐍 Генераторы и их "волшебная" экономия памяти Генераторы в Python — это не просто стиль написания кода, это ещё и способ эко
🐍 Генераторы и их "волшебная" экономия памяти Генераторы в Python — это не просто стиль написания кода, это ещё и способ экономить память! Вместо того чтобы создавать и хранить весь список в памяти, генератор создает элементы "на лету", по одному за раз. 💡 Пример использования генератора:

def my_generator():
    for i in range(5):
        yield i

gen = my_generator()

print(next(gen))  # 0
print(next(gen))  # 1
Результат:
0
1
🔑 С помощью yield функция становится генератором, и каждый вызов next() будет возвращать следующий элемент. Такой подход уменьшает расход памяти, особенно если элементов много!

🎭 "Секретные" подчеркивания в Python В Python подчеркивания (_) используются не просто так! Вот несколько интересных случаев
🎭 "Секретные" подчеркивания в Python В Python подчеркивания (_) используются не просто так! Вот несколько интересных случаев: ✅ Одиночное _ в интерактивном режиме Python Последний результат сохраняется в переменной _:
>>> 10 + 5
15
>>> _ * 2  # Используем результат предыдущей операции
30
✅ _ как имя переменной для неиспользуемых значений Если переменная не нужна, её часто обозначают _:

for _ in range(3):  
    print("Hello!")  # Повторит 3 раза, но переменная нам не нужна
✅ Двойное подчеркивание (__) в именах переменных Если переменная начинается с __, она получает "защиту" от случайного доступа (name mangling):

class Example:
    def __init__(self):
        self.__secret = "Не трогай меня!"

obj = Example()
print(dir(obj))  # Смотрим атрибуты, Python спрятал переменную!
Результат (сокращенно):
['_Example__secret', '__class__', ...]

🕵️‍♂️ Однострочный swap переменных без временной переменной Обычно, если нужно поменять значения двух переменных местами, пр
🕵️‍♂️ Однострочный swap переменных без временной переменной Обычно, если нужно поменять значения двух переменных местами, программисты используют временную переменную. В Python можно сделать это красиво и коротко! 💡 Пример:

a, b = 5, 10
a, b = b, a  # Магия кортежей!

print(a, b)
Результат:
10 5
🔥 Без лишнего кода и лишних переменных!

Работа с модулем functools 🛠️✨ Суть темы: Модуль functools предоставляет набор инструментов для работы с функциями. 🎯 Эти и
Работа с модулем functools 🛠️✨ Суть темы: Модуль functools предоставляет набор инструментов для работы с функциями. 🎯 Эти инструменты позволяют создавать более гибкие и мощные функции, такие как частичные функции, мемоизация и декораторы. 🛠️ Применение: Создание частичных функций с помощью partial. 🔧 Мемоизация результатов функций с помощью lru_cache. 🧠 Использование декораторов для изменения поведения функций. 🎩 Пример кода:

from functools import partial, lru_cache

# Создание частичной функции
def multiply(x, y):
    return x * y

double = partial(multiply, 2)
print(double(5))  # Вывод: 10

# Мемоизация результатов функции
@lru_cache(maxsize=None)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))  # Вывод: 55
Почему это круто? Модуль functools предоставляет мощные инструменты для работы с функциями. 💪 Эти инструменты делают код более читаемым и эффективным. 🚀

Работа с модулем itertools 🔄✨ Суть темы: Модуль itertools предоставляет набор инструментов для работы с итераторами. 🛠️ Эти
Работа с модулем itertools 🔄✨ Суть темы: Модуль itertools предоставляет набор инструментов для работы с итераторами. 🛠️ Эти инструменты позволяют создавать сложные итераторы для обработки данных, комбинирования элементов и генерации последовательностей. 🎯 Применение: Генерация комбинаций и перестановок. 🔢 Создание бесконечных итераторов. ♾️ Обработка данных с помощью цепочек итераторов. 🔗 Пример кода:

import itertools

# Генерация всех возможных комбинаций
combinations = list(itertools.combinations('ABC', 2))
print(combinations)  # Вывод: [('A', 'B'), ('A', 'C'), ('B', 'C')]

# Генерация бесконечного итератора
count = itertools.count(start=10, step=2)
for _ in range(5):
    print(next(count))  # Вывод: 10, 12, 14, 16, 18

# Цепочка итераторов
chain = itertools.chain('ABC', 'DEF')
print(list(chain))  # Вывод: ['A', 'B', 'C', 'D', 'E', 'F']
Почему это круто? Модуль itertools предоставляет мощные инструменты для работы с итераторами. 💪 Эти инструменты делают код более читаемым и эффективным. 🚀

Работа с модулем collections 🧩📚 Суть темы: Модуль collections предоставляет специализированные типы данных, которые расширя
Работа с модулем collections 🧩📚 Суть темы: Модуль collections предоставляет специализированные типы данных, которые расширяют возможности стандартных коллекций Python. 🛠️ Применение: Подсчет элементов с помощью Counter. 🔢 Создание именованных кортежей с помощью namedtuple. 📝 Управление порядком элементов с помощью deque. 🔄 Пример кода:

from collections import Counter, namedtuple, deque

# Использование Counter для подсчета элементов
data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
count = Counter(data)
print(count)  # Вывод: Counter({'apple': 3, 'banana': 2, 'orange': 1})

# Использование namedtuple для создания именованных кортежей
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x, p.y)  # Вывод: 10 20

# Использование deque для управления порядком элементов
d = deque([1, 2, 3])
d.appendleft(0)
d.append(4)
print(d)  # Вывод: deque([0, 1, 2, 3, 4])
Почему это круто? Модуль collections предоставляет мощные инструменты для работы с коллекциями. 💪

Работа с лямбда-функциями и функциями высшего порядка 🎯✨ Суть темы: Лямбда-функции — это анонимные функции, которые можно ис
Работа с лямбда-функциями и функциями высшего порядка 🎯✨ Суть темы: Лямбда-функции — это анонимные функции, которые можно использовать для создания простых операций в одну строку. 🧩 Функции высшего порядка — это функции, которые принимают другие функции в качестве аргументов или возвращают их. 🛠️ Применение: Создание простых функций "на лету". 🚀 Использование в функциях высшего порядка, таких как map, filter и reduce. 🔄 Упрощение кода и повышение его читаемости. 📖 Пример кода:

# Лямбда-функция для сложения двух чисел
add = lambda x, y: x + y
print(add(5, 3))  # Вывод: 8

# Использование лямбда-функции с map
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # Вывод: [1, 4, 9, 16]

# Использование лямбда-функции с filter
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Вывод: [2, 4]
Почему это круто? Лямбда-функции позволяют писать компактный и выразительный код. 🎨

Работа с регулярными выражениями (модуль re) 🔍✨ Суть темы: Регулярные выражения — это мощный инструмент для поиска и обработ
Работа с регулярными выражениями (модуль re) 🔍✨ Суть темы: Регулярные выражения — это мощный инструмент для поиска и обработки текста. 🧩 С их помощью можно находить, извлекать и заменять подстроки в тексте по сложным шаблонам. 🛠️ В Python для работы с регулярными выражениями используется модуль re. 🐍 Применение: Поиск и извлечение данных из текста. 📄 Валидация вводимых данных (например, email или телефонных номеров). 📧📞 Пример кода:

import re

# Поиск email-адресов в тексте
text = "Свяжитесь с нами по email: support@example.com или info@example.org."
emails = re.findall(r'[\w\.-]+@[\w\.-]+', text)
print(emails)  # Вывод: ['support@example.com', 'info@example.org']

# Замена текста по шаблону
new_text = re.sub(r'\d{2}-\d{2}-\d{4}', 'ДД-ММ-ГГГГ', 'Дата: 12-05-2023')
print(new_text)  # Вывод: Дата: ДД-ММ-ГГГГ
Почему это круто? Регулярные выражения позволяют решать сложные задачи обработки текста одной строкой кода. 🎯 Они универсальны и поддерживаются во многих языках программирования. 🌍

Создание и использование пользовательских исключений 🚨🛠️ Суть темы: Пользовательские исключения позволяют создавать собстве
Создание и использование пользовательских исключений 🚨🛠️ Суть темы: Пользовательские исключения позволяют создавать собственные типы ошибок, которые лучше отражают специфику вашего приложения. 🎯 Это делает код более читаемым и упрощает обработку ошибок. 🛠️ Применение: Создание специфических ошибок для вашего приложения. 🎯 Улучшение читаемости и поддерживаемости кода. 📖 Упрощение отладки и обработки ошибок. 🐛 Пример кода:

class NegativeNumberError(Exception):
    """Исключение, которое выбрасывается, если число отрицательное."""
    def __init__(self, value):
        self.value = value
        super().__init__(f"Отрицательное число недопустимо: {value}")

def check_positive(number):
    if number < 0:
        raise NegativeNumberError(number)
    return number

try:
    check_positive(-10)
except NegativeNumberError as e:
    print(e)  # Вывод: Отрицательное число недопустимо: -10
Почему это круто? Пользовательские исключения делают код более понятным и выразительным. 🎨