Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Инструмент делает запрос к ExchangeRate API и показывает актуальный курс USD к RUB — без заморочек и регистрации.
import requests
from typing import Optional
def get_exchange_rate(base_currency: str, target_currency: str) -> Optional[float]:
"""
Получает курс обмена из base_currency в target_currency.
:param base_currency: Базовая валюта (например, 'USD').
:param target_currency: Целевая валюта (например, 'RUB').
:return: Курс обмена или None в случае ошибки.
"""
url = f"https://open.er-api.com/v6/latest/{base_currency}"
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()
rate = data["rates"].get(target_currency)
if rate is None:
print(f"Курс для {target_currency} не найден.")
return None
return rate
except requests.RequestException as e:
print(f"Ошибка при запросе к API: {e}")
return None
if __name__ == "__main__":
base = "USD"
target = "RUB"
rate = get_exchange_rate(base, target)
if rate:
print(f"Курс {base} к {target}: {rate}")
else:
print("Не удалось получить курс обмена.")
# Курс USD к RUB: 80.926191
#python #code #soft
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Python PDF Handling Tutorial — интересная подборка скриптов для работы с PDF-файлами в Python:
Вы научитесь:
Пример извлечения текста:
from io import StringIO
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
# PDFMiner Analyzers
rsrcmgr = PDFResourceManager()
sio = StringIO()
codec = "utf-8"
laparams = LAParams()
device = TextConverter(rsrcmgr, sio, codec=codec, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
# path to our input file
pdf_file = "sample.pdf"
# Extract text
pdfFile = open(pdf_file, "rb")
for page in PDFPage.get_pages(pdfFile):
interpreter.process_page(page)
pdfFile.close()
# Return text from StringIO
text = sio.getvalue()
print(text)
# Freeing Up
device.close()
sio.close()
Пример извлечения изображений:
import fitz
import io
from PIL import Image
# path to our input file
pdf_file = "sample.pdf"
# Input PDF file
pdf_file = fitz.open(pdf_file)
for page_no in range(len(pdf_file)):
curr_page = pdf_file[page_no]
images = curr_page.getImageList()
for image_no, image in enumerate(curr_page.getImageList()):
# get the XREF of the image
xref = image[0]
# extract the image bytes
curr_image = pdf_file.extractImage(xref)
img_bytes = curr_image["image"]
# get the image extension
img_extension = curr_image["ext"]
# load it to PIL
image = Image.open(io.BytesIO(img_bytes))
# save it to local disk
image.save(open(f"page{page_no+1}_img{image_no}.{img_extension}", "wb"))
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Python — не только про скрипты и автоматизацию. Он умеет работать сразу с несколькими задачами параллельно — и делать это красиво. Но тут есть нюансы: GIL, multiprocessing, asyncio... разберём всё!
* Процессы (multiprocessing) — как отдельные контейнеры. Изолированы, не делят память. Каждый процесс может использовать своё ядро процессора. Идеально для вычислений.
* Потоки (threading) — живут в одном процессе и делят между собой память. Отлично справляются с задачами, связанными с вводом/выводом (например, скачивание файлов).
* Асинхронность (asyncio) — не параллельность в классическом смысле. Всё работает в одном потоке, но задачи переключаются между собой, не блокируя выполнение. Лучший выбор для работы с сетью.
GIL — глобальная блокировка интерпретатора в Python. Она позволяет одновременно выполняться только одному потоку Python-кода, даже если у тебя 64 ядра. Почему так? Потому что управление памятью в CPython не потокобезопасно.
multiprocessing
> Идеален для тяжёлых вычислений на нескольких ядрах.
*
Process
— запуск нового процесса*
Pool
— пул воркеров*
Queue
, Pipe
— обмен данными*
Manager
— разделение объектов между процессами*
Lock
, Semaphore
— синхронизация*
cpu_count()
— сколько у тебя вообще ядер?threading
> Для I/O задач, где важна отзывчивость: загрузка веб-страниц, параллельный логинг и т.д.
*
Thread
— запуск нового потока*
Timer
, Event
, Barrier
— управление временем и синхронизацией*
enumerate()
, current_thread()
— управление потокамиasyncio
> Современный подход: запуск кучи задач внутри одного потока.
*
async
/ await
— ключевые слова*
asyncio.run()
, asyncio.gather()
— запуск корутин* Поддержка библиотек:
*
aiohttp
— запросы к сайтам*
aiofiles
— работа с файламиRace condition (состояние гонки) — когда два потока одновременно хотят изменить одну и ту же переменную. Кто первый встал — того и тапки. Итог: баги, которых потом не найдёшь.
Потокобезопасность достигается через:
*
Lock
, RLock
* Локальные данные потока (
threading.local()
)Асинхронная программа:
* запускает задачу;
* пока ждёт ответа — делает что-то ещё;
* возвращается к задаче, когда пришёл ответ.
Пример:
import asyncio
import aiohttp
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as resp:
return await resp.text()
async def main():
html = await fetch('https://example.com')
print(html)
asyncio.run(main())
🔧 Сравнение подходов:
📌 multiprocessing
• Параллельность: ✅
• Делит память: ❌
• Для чего: тяжёлые CPU-задачи
📌 threading
• Параллельность: ❌ (из-за GIL)
• Делит память: ✅
• Для чего: задачи с вводом/выводом (I/O)
📌 asyncio
• Параллельность: ❌
• Делит память: ✅
• Для чего: сетевые и файловые задачи
* Нужна мощь ядра? —
multiprocessing
* Много сетевых вызовов и ожиданий? —
asyncio
* Быстрая и простая многозадачность? —
threading
* GIL — особенность Python, но не приговор
@python2day
#doc #python #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Кодим и развиваемся без боли
Залетела мощная нейротулза: берёт любой проект с GitHub и превращает его в интерактивный гайд. Пошагово объясняет, как работает код, причём простыми словами — даже новичок разберётся.
Что умеет:
— Учит новым технологиям прямо на реальных проектах;
— Автоматически превращает код в понятную документацию;
— Разбирает сложные участки и даёт подробные объяснения;
— Отличный способ учиться не по теории, а по боевому коду.
#python #soft #github
Please open Telegram to view this post
VIEW IN TELEGRAM
ItsCaptchaBot — умный бот с капчей, который отфильтрует подозрительных новичков ещё до «привет».
— Добавляешь бота в чат;
— Даёшь права на удаление сообщений и ограничение участников;
— Каждый новый юзер должен пройти капчу в течение 10 минут;
— Не прошёл? Автокик. Всё просто.
#python #soft #code
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from GODLIKE
Please open Telegram to view this post
VIEW IN TELEGRAM
Если ты изучаешь программирование или хочешь наконец понять, чем массив отличается от хеш-таблицы, эта шпаргалка — твой must-have.
Подходит всем, кто готовит себя к интервью, сдаёт экзамены, пишет код на Python, JavaScript, C++ и не только.
#doc #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⠀
За монитором с милым голосом тебя может ждать потный, волосатый дядька в трусах
Подстава...
Please open Telegram to view this post
VIEW IN TELEGRAM
#doc #python #cheatsheet #russian
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос_ответ_для_Python_разработчика_на_собеседовании.pdf
851.3 KB
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⠀
Гуманоидный робот Tesla Optimus уже не просто ходит:
он гладит, моет посуду, готовит и разбирает бардак, пока ты листаешь ленту.
⠀
Серийное производство стартует уже в этом году.
#cyberpunk
Please open Telegram to view this post
VIEW IN TELEGRAM
$1,1 миллиарда
Так родилась легенда самой дорогой пиццы в мире и повод для ежегодного праздника у всех криптанов — Bitcoin Pizza Day (22 мая).
А ещё сегодня биткоин обновил исторический максимум, перешагнув $111 тысяч
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
[PYTHON:TODAY]
Please open Telegram to view this post
VIEW IN TELEGRAM