Media is too big
VIEW IN TELEGRAM
В видео рассмотрим асинхронное программирование, и виды многозадачности при проектировании приложения - процессы, потоки и асинхронный код. Рассмотрим библиотеку asyncio и как на python писать асинхронный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Стандартные словари в Python не всегда удобны, если вам нужно хранить несколько значений для одного ключа. Например, если вы хотите, чтобы каждый ключ хранил список значений, вам придется проверять, существует ли уже такой ключ, и если нет — создавать новый список.
Однако, в подобных ситуациях, мы можем использовать
defaultdict из модуля collections.from collections import defaultdict
my_dict = defaultdict(list)
my_dict["a"].append(1)
my_dict["a"].append(2)
my_dict["b"].append(3)
print(my_dict)
— Каждый ключ по умолчанию связан с пустым списком.
— Если ключ "a" уже существует, добавляем значение в список.
— Если ключа "a" нет, он создается с пустым списком, и добавляется значение.
Удобно для работы с группами данных, подсчетами и многими другими задачами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
CodeDex — это интерактивная платформа, которая позволяет изучать Python через практику и увлекательные задачи.
— Интерактивные уроки: учите Python шаг за шагом, выполняя задания прямо в браузере.
— Практика на реальных задачах: от простых основ до сложных алгоритмов.
— Геймификация обучения: очки, уровни и достижения делают процесс увлекательным.
— Раздел для опытных пользователей: сложные темы, такие как работа с API, асинхронность и обработка данных.
Кстати, вот еще репозиторий с готовым кодом решений задач: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
Это набор функций, связанных с копированием различных элементов списка, объектов, массивов и т.д. С его помощью можно создавать как поверхностные, так и глубокие копии.
Операторы присваивания в Python не копируют объекты, они создают привязки между целью и объектом. Для коллекций, которые являются изменяемыми или содержат изменяемые элементы, иногда требуется копирование, чтобы можно было изменить одну копию, не изменяя другую. Этот модуль предоставляет общие операции поверхностного и глубокого копирования.
Поверхностное копирование строит новый составной объект, а затем вставляет в него ссылки на объекты имеющиеся в оригинале.
>>> import copy
>>> a = [[1],[2],[3]]
>>> b = copy.copy(a) # поверхностно копируем список a в список b
>>> a
#[[1], [2], [3]]
>>> b
#[[1], [2], [3]]
При глубоком копировании создается новый составной объект, а затем в него рекурсивно вставляются копии объектов, содержащихся в оригинале.
>>> import copy
>>> a = [[1],[2],[3]]
>>> b = copy.deepcopy(a) # создаем глубокую копию списка a
>>> a[0][0] = 0
>>> a[1] = None
>>> a
#[[0], None, [3]]
>>> b
#[[1], [2], [3]]
Кстати, пишите в комменты ваши пожелания по контенту🔥
P.S. На днях уже залью обещанный гайд =)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Что из себя представляет пакет NumPy для языка Python. Как он устанавливается и импортируется в программы. Первое знакомство с массивами array. Способ их задания с помощью функции array и демонстрация некоторых возможностей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
Это огромная коллекция идей для проектов, которые можно реализовать на разных языках программирования, включая Python.
— Проекты для новичков: калькуляторы, конвертеры и простые игры.
— Идеи для продвинутых: чат-боты, системы управления, веб-приложения.
— Креативные задачи: генераторы паролей, парсеры данных, API для фильмов.
— Темы на любой вкус: от искусственного интеллекта до мобильных приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Есть много способов избавиться от дубликатов файлов в папке, но этот скрипт будет искать и удалять такие файлы, опираясь на их хеш-сумму. Это гарантирует, что будут удаляться только точные копии.
1. Мы вычисляем хеш каждого файла с помощью библиотеки hashlib.
2. Если файл с таким хешом уже встречался в директории, значит, это дубликат, и его можно безопасно удалить.
3. Скрипт выводит список удаленных файлов, или сообщение о том, что дубликатов не найдено.
📂 Скрипт с подробным комментированием кода уже в архиве:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Вместо использования громоздких методов поиска, таких как
.find(), Python позволяет лаконично проверить наличие подстроки с помощью оператора in.text = "Python — отличный язык!"
if "отличный" in text:
print("Нашли слово!") # Вывод: Нашли слово!
Оператор
in работает не только со строками, но и с другими коллекциями (списки, множества, словари).items = [1, 2, 3]
print(2 in items) # Вывод: True
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆11👍9🔥2
Humanize — это библиотека для преобразования чисел, дат и других данных в удобочитаемый формат. Она позволяет выводить информацию в виде, понятном пользователю, например, "2 часа назад" или "5.4K".
import humanize
from datetime import datetime, timedelta
# Преобразование чисел
print(humanize.intword(1234567)) # "1.2 million"
print(humanize.intcomma(1234567)) # "1,234,567"
# Форматирование времени
now = datetime.now()
past = now - timedelta(hours=5)
print(humanize.naturaltime(past)) # "5 часов назад"
# Размеры файлов
print(humanize.naturalsize(1024000)) # "1.0 MB"
Humanize делает ваш код более ориентированным на пользователя и улучшает представление данных.
pip install humanize
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤6🔥1
JSON (JavaScript Object Notation) — это текстовый формат обмена данными, который часто используется в API, конфигурационных файлах и при работе с веб-приложениями. В Python для работы с JSON используется встроенный модуль
json.Вы можете загружать JSON-данные из строки с помощью функции
json.loads.import json
# JSON-строка
data = '{"name": "Alice", "age": 25, "hobbies": ["reading", "coding"]}'
# Преобразуем строку в Python-словарь
parsed_data = json.loads(data)
print(parsed_data["name"]) # Alice
print(parsed_data["hobbies"]) # ['reading', 'coding']
Если JSON-данные хранятся в файле, используйте функцию
json.load.import json
# Открываем файл с JSON
with open("data.json", "r") as file:
data = json.load(file)
# Работаем с данными
print(data["name"]) # Alice
print(data["age"]) # 25
data.json:{
"name": "Alice",
"age": 25,
"hobbies": ["reading", "coding"]
}Функция
json.dump сохраняет данные Python в файл в формате JSON.import json
# Данные для записи
data = {
"status": "success",
"code": 200,
"message": "Data saved successfully!"
}
# Сохраняем в файл
with open("output.json", "w") as file:
json.dump(data, file, indent=4) # indent=4 делает JSON читабельным
output.json:{
"status": "success",
"code": 200,
"message": "Data saved successfully!"
}Чтобы не растягивать пост, я решил разбить эту тему на несколько частей. Во второй части рассмотрим: преобразование Python-объектов в JSON, настройку сериализации JSON, а также несколько советов по использованию модуля
json.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤7🔥3👏1
Наверное у каждого есть папка с фотографиями, в которой свалено просто все, что можно, в одну кучу... Так вот если вы все таки надумали навести порядок, то можно организовать фото по дате съёмки с помощью библиотеки Pillow.
Фотографии часто содержат метаданные EXIF, где хранится дата съёмки. Мы используем её для создания папок и перемещения файлов.
Для работы скрипта, потребуется установить библиотеку Pillow:
pip install pillow
1. Считывает дату съёмки из EXIF-метаданных, а если их нет, то берет дату создания файла.
2. Создаёт папки для каждой даты (формат: YYYY-MM-DD).
3. Перемещает фотографии в соответствующие папки.
📂 Скрипт с комментированием кода уже в архиве:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Статья рассказывает о списках в Python — одном из самых универсальных и часто используемых инструментов для работы с данными.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Paramiko — это модуль Python, реализующий протокол SSHv2. Он обеспечивает возможность подключения к удаленным серверам по протоколу SSH и выполнения различных операций на них, таких как выполнение команд, передача файлов и создание туннелей.
import paramiko
# Создаем объект SSHClient
ssh = paramiko.SSHClient()
# Устанавливаем политику авторизации (автоматически добавляем хосты в known_hosts)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Подключаемся к серверу
ssh.connect(hostname='example.com', username='user', password='password')
# Выполняем команду на сервере
stdin, stdout, stderr = ssh.exec_command('ls -l')
# Читаем вывод команды
print(stdout.read().decode())
# Закрываем соединение
ssh.close()
pip install paramiko
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
В первой части мы разобрались с чтением и записью JSON-данных. Теперь давайте посмотрим, как преобразовать Python-объекты в JSON, настроить сериализацию и эффективно использовать модуль json.
Чтобы конвертировать Python-объект в JSON-строку, используется функция
json.dumps:import json
# Python-словарь
data = {
"name": "Alice",
"age": 25,
"is_active": True
}
# Преобразование в JSON-строку
json_data = json.dumps(data)
print(json_data) # {"name": "Alice", "age": 25, "is_active": true}
dict, list, str, int, float и bool, автоматически преобразуются в их JSON-аналоги.Если данные содержат нестандартные типы, такие как
datetime, то их нужно преобразовать перед сериализацией.Пример:
import json
from datetime import datetime
# Python-данные с датой
data = {
"name": "Alice",
"created_at": datetime.now()
}
# Кастомная функция для обработки объектов
def custom_serializer(obj):
if isinstance(obj, datetime):
return obj.isoformat()
raise TypeError("Невозможно сериализовать объект")
# Сериализация с кастомной функцией
json_data = json.dumps(data, default=custom_serializer, indent=4)
print(json_data)
Добавьте параметр
indent для читабельности:json_data = json.dumps(data, indent=4)
Для сортировки ключей используйте
sort_keys=True:json_data = json.dumps(data, sort_keys=True)
Используйте
parse_int и parse_float для контроля обработки чисел:json.loads('{"big_number": 12345678901234567890}', parse_int=lambda x: int(x))Если было полезно, ставь🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍6❤2
Для создания такого скрипта, нам потребуется библиотека — psutil. С её помощью можно отслеживать загрузку процессора, использование памяти, работу дисков и сети.
import psutil
import time
def monitor_server():
print("Мониторинг сервера...")
print("-" * 40)
while True:
# Загрузка процессора
cpu_usage = psutil.cpu_percent(interval=1)
print(f"Загрузка CPU: {cpu_usage}%")
# Использование памяти
memory = psutil.virtual_memory()
print(f"Память: {memory.percent}% использовано ({memory.used / 1e+6:.2f} MB из {memory.total / 1e+6:.2f} MB)")
# Использование дисков
disk = psutil.disk_usage('/')
print(f"Диск: {disk.percent}% использовано ({disk.used / 1e+9:.2f} GB из {disk.total / 1e+9:.2f} GB)")
# Загрузка сети
net = psutil.net_io_counters()
print(f"Сеть: Отправлено {net.bytes_sent / 1e+6:.2f} MB, Получено {net.bytes_recv / 1e+6:.2f} MB")
print("-" * 40)
time.sleep(5) # Интервал обновления (в секундах)
# Запуск мониторинга
monitor_server()
— Измеряет процент использования всех ядер.
— Показывает, сколько памяти занято и свободно.
— Оценивает использование главного раздела /.
— Выводит объём переданных и полученных данных.
pip install psutil
Скрипт можно доработать, добавив запись логов или прикрутить к боту для отправки уведомлений в Telegram при превышении заданных порогов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
Python известен своей простотой и предсказуемостью, но за этой доступностью скрываются интересные и неочевидные особенности, способные удивить программистов с базовым опытом(а если повезет, то и опытных). В этой статье мы рассмотрим несколько таких «фокусов» и тонкостей, чтобы глубже понять внутреннюю логику и философию языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
📂 Сохраняем
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥7❤2
Декораторы можно делать настраиваемыми, передавая параметры в сам декоратор. Это позволяет динамически изменять поведение функций.
Создадим декоратор, который повторяет выполнение функции заданное количество раз:
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3) # Выполнится 3 раза
def say_hello():
print("Привет!")
say_hello()
Привет!
Привет!
Привет!
В этом примере мы передаем число
n в декоратор, чтобы он выполнял функцию несколько раз.Это удобно, например, для логирования, проверки прав доступа или многократного выполнения задач, когда поведение нужно настраивать динамически.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥3
Каждая глава посвящена разработке новой программы, от генерации паролей до создания забавных шекспировских оскорблений. Издание идеально подойдет для тех, кто только начинает знакомиться с программированием, а также для опытных пользователей, желающих освоить Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8