Python_No_Panic
2.06K subscribers
123 photos
18 videos
49 links
Самый перспективный, полезный и ламповый канал по Python в русскоязычном телеграме!

Обучающие посты в хронологическом порядке, посты по софт скиллам и чат, где вам всегда помогут админы и комьюнити.

Сотрудничество:
@Niik_Whaale
Download Telegram
Обработка URL с urllib.parse 🌐

Модуль urllib.parse помогает разбирать и создавать URL-адреса.

🔍 Применение:
Создание запросов к API.
Разбор адресов.
Управление параметрами.

from urllib.parse import urlparse

url = "https://example.com/path?name=Alice"
parsed_url = urlparse(url)

print("Domain:", parsed_url.netloc)
print("Path:", parsed_url.path)
print("Query:", parsed_url.query)


🔑 Результат выполнения:

Domain: example.com
Path: /path
Query: name=Alice
🔥3
Челлендж: «Поиск пиков»
Привет, кодеры! Сегодня будем работать с массивами.

📈 Суть задачи:
Напишите функцию, которая находит все пики в массиве. Пиком считается элемент, который больше соседних слева и справа. Граничные элементы не считаются.

Пример:

Input: [1, 3, 7, 1, 2, 6, 3, 2]
Output: [7, 6]


Усложнение для профи:
Найдите индекс каждого пика, а не только их значения.
Реализуйте алгоритм с минимальной сложностью.

💡 Подсказки:
Пройдитесь по массиву циклом, начиная со второго элемента и заканчивая предпоследним.
Используйте индексы, чтобы проверять соседние элементы.
Если хотите оптимизировать: изучите двоичный поиск для таких задач.


Кто сможет найти все пики? Пишите свои ответы! 🏔️
👍1🔥1
Секретный импорт

Что напечатает код?

import this


Вопрос: Что произойдет при выполнении этого кода? Какую информацию он содержит?
Шаблоны строк с string.Template 🖋️

Модуль string.Template позволяет создавать строки с шаблонами для упрощения подстановок.

🔍 Применение:
Генерация писем.
Форматирование отчетов.
Упрощение работы с текстом.

from string import Template

template = Template("Hello, $name! Welcome to $place.")
message = template.substitute(name="Alice", place="Python World")

print(message)


🔑 Результат выполнения:

Hello, Alice! Welcome to Python World.
👍5
Работа с изображениями через Pillow 🖌️

Библиотека Pillow предоставляет мощные инструменты для обработки изображений.

🔍 Применение:
Редактирование изображений.
Создание миниатюр.
Добавление фильтров.

from PIL import Image

# Открываем изображение и создаем миниатюру
image = Image.open("example.jpg")
image.thumbnail((100, 100))
image.save("thumbnail.jpg")

print("Thumbnail создан.")


🔑 Результат выполнения:
Создается миниатюра изображения с размерами 100x100 пикселей.
👍2
Создание конфигураций через configparser ⚙️

Модуль configparser используется для работы с конфигурационными файлами.

🔍 Применение:
Хранение настроек.
Упрощение настройки приложений.
Чтение конфигураций.

import configparser

config = configparser.ConfigParser()
config.read("config.ini")

print("Database:", config["database"]["name"])


🔑 Результат выполнения:
При наличии файла config.ini с содержимым:

[database]
name = test_db


Вывод:

Database: test_db
2👍1
Многопроцессорная обработка с multiprocessing ⚙️
Модуль multiprocessing позволяет запускать код параллельно, используя несколько процессов.

🔍 Применение:
Распараллеливание задач.
Ускорение вычислений.
Обработка больших данных.


import multiprocessing
import time

def worker(name):
print(f"Worker {name} starting")
time.sleep(2)
print(f"Worker {name} finished")

if __name__ == "__main__":
process1 = multiprocessing.Process(target=worker, args=("A",))
process2 = multiprocessing.Process(target=worker, args=("B",))

process1.start()
process2.start()

process1.join()
process2.join()


🔑 Результат выполнения:

Worker A starting
Worker B starting
Worker A finished
Worker B finished
4
Сохранение данных с pickle 📦
Модуль pickle используется для сериализации и десериализации объектов Python.

🔍 Применение:
Сохранение состояния программ.
Передача данных между процессами.
Хранение пользовательских объектов.


import pickle

data = {"name": "Alice", "age": 30}

# Сохранение
with open("data.pkl", "wb") as file:
pickle.dump(data, file)

# Загрузка
with open("data.pkl", "rb") as file:
loaded_data = pickle.load(file)

print(loaded_data)


🔑 Результат выполнения:

{'name': 'Alice', 'age': 30}
🔥4
Работа с потоками данных через queue 🌀
Модуль queue помогает организовать безопасную передачу данных между потоками.

🔍 Применение:
Организация очередей задач.
Асинхронная обработка.
Управление ресурсами.


import queue

q = queue.Queue()

# Добавление элементов
q.put(1)
q.put(2)
q.put(3)

# Получение элементов
while not q.empty():
print(q.get())


🔑 Результат выполнения:

1
2
3
🔥1
Создание диаграмм с seaborn 📊
seaborn — это библиотека для создания статистических графиков.

🔍 Применение:
Анализ данных.
Отображение корреляций.
Статистическая визуализация.


import seaborn as sns
import matplotlib.pyplot as plt

data = [10, 20, 30, 40, 50]
sns.boxplot(data=data)
plt.title("Boxplot Example")
plt.show()


🔑 Результат выполнения:
Создается боксплот с визуализацией данных.
🔥2
Ленивая загрузка с itertools
Модуль itertools предоставляет ленивые итераторы для работы с последовательностями.

🔍 Применение:
Оптимизация больших данных.
Генерация комбинаций.
Создание бесконечных последовательностей.


import itertools

# Бесконечный цикл
counter = itertools.count(start=1, step=2)

for _ in range(5):
print(next(counter))


🔑 Результат выполнения:

1
3
5
7
9
👍2
Контроль ресурсов через contextlib 🚪
Модуль contextlib упрощает управление ресурсами с помощью контекстных менеджеров.

🔍 Применение:
Управление файлами.
Работа с сетевыми соединениями.
Сложные контексты.


from contextlib import contextmanager

@contextmanager
def custom_context():
print("Entering context")
yield
print("Exiting context")

with custom_context():
print("Inside context")


🔑 Результат выполнения:

Entering context
Inside context
Exiting context
🔥1
Шифрование с использованием cryptography 🔐
Библиотека cryptography позволяет шифровать и дешифровать данные.

🔍 Применение:
Защита данных.
Реализация безопасных сообщений.
Хранение конфиденциальной информации.


from cryptography.fernet import Fernet

# Генерация ключа и шифрование данных
key = Fernet.generate_key()
cipher = Fernet(key)

message = b"Secret Message"
encrypted_message = cipher.encrypt(message)
print("Encrypted:", encrypted_message)

# Дешифрование
decrypted_message = cipher.decrypt(encrypted_message)
print("Decrypted:", decrypted_message.decode())


🔑 Результат выполнения:

Encrypted: b'...'
Decrypted: Secret Message
🔥21👍1
🚀 Контекстные менеджеры

Суть темы:
Контекстные менеджеры позволяют управлять ресурсами, такими как файлы или сетевые соединения, с помощью ключевого слова with. Это гарантирует, что ресурсы будут правильно освобождены после использования.

Применение:
Работа с файлами.
Управление сетевыми соединениями.
Обеспечение корректного завершения транзакций.

Пример кода:

with open('file.txt', 'r') as file:
content = file.read()
print(content)
👍21🔥1
Дескрипторы и свойства

Суть темы:
Дескрипторы и свойства позволяют контролировать доступ к атрибутам класса. Это полезно для создания более гибких и безопасных объектов.

Применение:
Валидация данных при установке значений атрибутов.
Ленивая загрузка данных.
Создание вычисляемых атрибутов.

Пример кода:

class Temperature:
def __init__(self, celsius):
self.celsius = celsius

@property
def fahrenheit(self):
return self.celsius * 9/5 + 32

@fahrenheit.setter
def fahrenheit(self, value):
self.celsius = (value - 32) * 5/9

temp = Temperature(0)
print(temp.fahrenheit) # Вывод: 32.0
temp.fahrenheit = 100
print(temp.celsius) # Вывод: 37.777...
🔥21👍1
Работа с базами данных (ORM и SQLAlchemy)

Суть темы:
ORM (Object-Relational Mapping) позволяет работать с базами данных, используя объекты Python, вместо написания SQL-запросов вручную. SQLAlchemy — одна из самых популярных библиотек для работы с базами данных в Python.

Применение:
Упрощение работы с базами данных.
Создание сложных запросов с помощью Python-кода.
Поддержка различных СУБД (PostgreSQL, MySQL, SQLite и др.).

Пример кода:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)

engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

new_user = User(name="Alice", age=25)
session.add(new_user)
session.commit()
👍2🔥21
Создание и использование контекстных менеджеров с contextlib 🛠️🔧

Суть темы:
Контекстные менеджеры — это мощный инструмент в Python, который позволяет управлять ресурсами, такими как файлы, сетевые соединения или блокировки, с помощью ключевого слова with. 🗝️

Модуль contextlib предоставляет удобные инструменты для создания собственных контекстных менеджеров без необходимости писать полноценный класс с методами enter и exit. 🎩

Применение:
Управление ресурсами, такими как файлы или сетевые соединения. 📂🌐
Обеспечение корректного завершения транзакций. 💾
Упрощение работы с временными изменениями состояния. 🕒

Пример кода:

from contextlib import contextmanager

@contextmanager
def open_file(name, mode):
f = open(name, mode)
try:
yield f
finally:
f.close()

# Использование контекстного менеджера
with open_file('test.txt', 'w') as f:
f.write('Привет, мир!')
👍21🔥1
Хеширование паролей с hashlib 🔑
Модуль hashlib позволяет создавать хеши данных, таких как пароли.

Применение:
Защита паролей
Проверка целостности данных


import hashlib

password = "my_secret_password"
hashed_password = hashlib.sha256(password.encode()).hexdigest()

print("Хеш пароля:", hashed_password)


Результат выполнения:

Хеш пароля: 6e6bc4e49dd477ebc98ef4046c067b5f2b0e6e2d2c7e4d3c6c34395f2b1ac540
👍2
Работа с байткодом и модулем dis 🧩🔍

Суть темы:
Python компилирует исходный код в байткод, который затем выполняется виртуальной машиной Python. 🖥️ Модуль dis позволяет дизассемблировать байткод и увидеть, как Python интерпретирует ваш код на низком уровне. 🕵️‍♂️

Применение:
Оптимизация производительности кода.
Понимание внутреннего устройства Python. 🧠
Отладка и анализ работы кода. 🛠️

Пример кода:

import dis

def example_function(x):
return x * x + 1

dis.dis(example_function)


Вывод:

2 0 LOAD_FAST 0 (x)
2 LOAD_FAST 0 (x)
4 BINARY_MULTIPLY
6 LOAD_CONST 1 (1)
8 BINARY_ADD
10 RETURN_VALUE


Почему это круто?

Модуль dis позволяет заглянуть "под капот" Python и понять, как работает ваш код. 🚗

Это полезно для оптимизации и отладки сложных участков кода. 🛠️
🔥1
Создание и использование дескрипторов 🛠️🔧

Суть темы:
Дескрипторы — это мощный инструмент в Python, который позволяет управлять доступом к атрибутам класса. 🎩 Они используются для создания свойств, которые могут выполнять дополнительные действия при доступе или изменении значения. 🛠️

Применение:
Валидация данных при установке значений атрибутов.
Ленивая загрузка данных. 🕒

Пример кода:

class Descriptor:
def __get__(self, instance, owner):
print("Получение значения")
return instance._value

def __set__(self, instance, value):
print("Установка значения")
instance._value = value

class MyClass:
attribute = Descriptor()

obj = MyClass()
obj.attribute = 10 # Установка значения
print(obj.attribute) # Получение значения


Вывод:

Установка значения
Получение значения
10


Почему это круто?
Дескрипторы позволяют создавать более гибкие и безопасные объекты. 🛡️
Они делают код более читаемым и удобным для повторного использования. 📖