es
Feedback
Pythoner

Pythoner

Ir al canal en Telegram

Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику. Сотрудничество - @flattys Цены - @serpent_media Канал на бирже: https://telega.in/c/pythonercode

Mostrar más
6 798
Suscriptores
+124 horas
-97 días
-3830 días
Archivo de publicaciones
👩‍💻 Программирование теперь в Telegram! Вот 8 обучающих каналов по самым востребованным направлениям в IT. Выбирай своё нап
👩‍💻 Программирование теперь в Telegram! Вот 8 обучающих каналов по самым востребованным направлениям в IT. Выбирай своё направление: 👩‍💻 Python: @python_ready 👩‍💻 Java: @java_ready 📖 Общее IT: @roadmap_ready 👩‍💻 Frontend: @code_ready 👩‍💻 C#: @csharp_ready 👩‍💻 C/C++: @cpp_ready 🖥 Базы Данных & SQL: @sql_ready 🖥 Design: @time_design 📌 Ресурсы, гайды, шпаргалки, книги, задачи и статьи для каждого языка программирования.

➡️Функция .upper() Функция .upper() в Python используется для преобразования всех символов в строке в верхний регистр. Это оч
➡️Функция .upper() Функция .upper() в Python используется для преобразования всех символов в строке в верхний регистр. Это очень полезно, когда вы хотите сравнить строки без учета регистра или обеспечить единообразие ввода данных. Пример использования:
text = 'Hello, World!'
print(text.upper())  # Вывод: 'HELLO, WORLD!'
➡️Функция .lower() С другой стороны, функция .lower() преобразует все символы строки в нижний регистр. Это также может быть полезно при сравнении строк или обеспечении единообразия ввода. Пример использования:
text = 'Hello, World!'
print(text.lower())  # Вывод: 'hello, world!'
➡️Применение .upper() и .lower() Функции .upper() и .lower() часто используются вместе для обеспечения единообразия ввода и процесса обработки данных. Например, вы можете преобразовать ввод пользователя в нижний регистр перед проверкой его в словаре, где все ключи хранятся в нижнем регистре. Таким образом, вы можете быть уверены, что ваш код будет работать независимо от того, как пользователь ввел данные. 🐍Pythoner

Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а зап
Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты. Если задуматься, то все в выигрыше: — ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя; — в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше; — мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут; — мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов. Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку! Узнать больше #реклама 16+ kata.academy О рекламодателе

🔥И снова новый, но последний пост по пирогу. В прошлый раз я обещал научить вытаскивать данные из сообщения, этим и займёмся
🔥И снова новый, но последний пост по пирогу. В прошлый раз я обещал научить вытаскивать данные из сообщения, этим и займёмся! 🔎Давайте с начала просто посмотрим из чего состоит получаемый объект
@app.on_message(filters.command(["start"], prefixes="."))
async def start(_, msg):
    print(msg)
⬆️В результате увидим много всяких данных. Самые часто используемые - id, text, from_user, chat reply_to_message(сообщение на которое ответили). ➡️Чтобы достать определенное значение надо перечислить ключи к нему через точку: ➖msg.text msg.chat.id ➖msg.reply_to_message.date ➡️Теперь попробуем на практике, поприветствуем новых участников в группе
@app.on_message(filters.chat([123,456]) & filters.new_chat_members)
async def welcome(_, msg):
    new_members = [u.mention for u in msg.new_chat_members]
    text = 'Привет, ' + ", ".join(new_members) + "!"
    await msg.reply(text, True disable_web_page_preview=True)
⬆️Разберем этот код 💬Создаем Декоратор: 💬📰Из определенных чатов ([123,456]) 💬📰Для новых участников 💬Создаем функцию И тут начинается самое то, что нас интересует 💬Перебираем список новых участников, и из них берем параметр mention - имя с ссылкой. 💬Формируем текст сообщения, соеденяя список из новый участников с помощью *str.join()* (о нем мы говорили в прошлом посте ) 💬Отвечаем на сообщение ответом и без предпросмотора ссылок 👀Итог Мы научились доставать данные из сообщения и вспомнили фильтры с обработчиками. Надеюсь это серия постов вам понравилась. 🐍Pythoner

🔥Продолжаем! ➡️Мы уже умеем создавать обработчики, теперь надо научится что-то делать, а не только принимать. В пироге функц
🔥Продолжаем! ➡️Мы уже умеем создавать обработчики, теперь надо научится что-то делать, а не только принимать. В пироге функции отправки чего-либо начинаются на "send" - app.send_message, например. ➡️Чтобы детально разобраться в какой-то функции - надо заглянуть в документацию! Кстати, у pyrogram она очень удобная и понятная ⛓https://docs.pyrogram.org ⛓ ⬆️Нам нужен метод который отвечает за отправку сообщения. В документации слева в менюшке ищем Available Methods (Доступные методы) - далее - send_message (отправить сообщение). И видим полное описание этого метода, что он делает, какие параметры принимает, что возвращает и примеры. ➡️Сразу под названием видим описание метода, то что он делает
Send text messages.
То есть
(отправляет текстовое сообщение)
➡️Ниже список параметров которые нужно в него передать. Давайте его разберем.
chat_id (int | str) – Unique identifier (int) or username (str) of the target chat. For your personal cloud (Saved Messages) you can simply use “me” or “self”. For a contact that exists in your Telegram address book you can use his phone number (str).
Или же
(chat_id (int | str) — уникальный идентификатор (int) или имя пользователя (str) целевого чата. Для вашего личного облака (сохраненных сообщений) вы можете просто использовать «me» или «self». Для контакта, который существует в вашей адресной книге Telegram, вы можете использовать его номер телефона (str))
В самое первое — название параметра далее в скобках тип данных. "|" - это "или", "либо". Если в скобках есть оptional, то это значит что этот аргумент не обязательный. И последнее - описание. ⬆️Из цитаты нам становится понятно, что chat_id принимает ID чата в виде строки либо числа, либо номер телефона, либо "me"|"self" если надо отправить себе в избранное. ❔Второй параметр разберите сами
text (str) – Text of the message to be sent.
text (str) – Текст отправляемого сообщения.
тут совсем легко, так что, думаю, все справились, сюда надо передать строку с отправляемым текстом 👀В итоге, отправлять сообщения надо так:
await app.send_message(chat_id, "text")
❕Обратите внимание, что в начале я поставил await. Если вы новичок - то просто ставьте перед методами await и все, а если вы уже что-то знаете, то объяснять не надо) ➡️Bound Methods Самые внимательные заметили, что в документации крок Available Methods есть еще Bound Methods (Связанные методы) Их фишка в том, что это методы сообщений которые мы получаем из хендлера (параметр msg). Например, чтобы изменить сообщение, не обязательно писать app.edit-бла-бла-бла, а можно просто msg.edit(). В него просто передаем строку и готово! 💬Задание: Пользуясь документацией, выясните что делает msg.reply() и какие параметры он принимает. ➡️Вернёмся в редактор кода Теперь вспоминаем все что учили и соберём знания вместе. Сделаем так, чтобы при написании команды .start сообщение изменялось на Python Pyrogram!
from pyrogram import Client, filters

app = Client("UserBot", 123, "abc")

@app.on_message(filters.command(["start"], prefixes=".") & filters.me)
async def start(_, msg):
    await msg.edit("Python Pyrogram!")

app.run()
👀Итоги: Сегодня мы научились работать с документацией, и научились изменять сообщения. А в следующем посте научимся получать из сообщения данные - его текст, отправитель, и тп. 🐍Pythoner

✈️Сегодня продолжим тему предыдущего поста и начнём создавать бота ➡️Начнем с самой базы - установки. python -m pip install p
✈️Сегодня продолжим тему предыдущего поста и начнём создавать бота ➡️Начнем с самой базы - установки.
python -m pip install pyrogram
🚀Для быстрой работы пирога лучше еще установить
python -m pip install TgCrypto
👀Теперь можно и код писать ➡️Импорт: Импорт тут максимально простой. Просто из pyrogram импортируем модули через from / import:
from pyrogram import Client # потом ещё будем добавлять
➡️Создание объекта бота: Как и в любом другом боте нам нужен объект, с помощью которого уже и осуществляется работа. В пироге это экземпляр принято называть app. В него нужно передать 💬Название, строка 💬API_ID, строка либо число (int) 💬API_HASH, строка Про API_ID и API_HASH поговорим чуток позже.
app = Client("MyFirstUserBot", api_id, api_hash)
➡️Обработчики: Обработчики (хендлеры, handler) это функции, которые срабатывают при определенном событии, например, при новом сообщении. В Pyrogram они в виде декорратора который начинается на "on" (с англ - при), наример @app.on_message, @app.on_chat_join_request. В декоратор следует передать фильтр, по которому будут выбираться случаи когда нужно чтобы обработчик сработал. В библиотеке есть встроенные фильтры, их надо импортировать, но их можно и самому написать (научимся позже) ➡️Как я говорил в предыдущем посте, нам нужно обрабатывать команды. Для этого, логично, надо создать обработчик сообщений, с фильтром, что это команда, и то что написали ее мы (мы ведь не хотим чтобы другие командовали вашим ботом?)
@app.on_message(filters.command(["start"], prefixes=".") & filters.me)
async def start(_, msg):
    pass
❕У обработчиков должен быть строгий порядок - от конкретных (например, команды), до более общих (всех сообщений) Правильный порядок хендлеров сообщений должен выглядеть так: ⚫ Команды ⚫ Сообщения с какими-то триггерами (например, если в слове есть слово "привет") ⚫ Все сообщения ➡️Запуск: Обработчики прописали, теперь пора это все дело запустить! Тут всё просто:
app.run()
➡️API_ID / API_HASH: И, самое главное, без чего наш код ни в коем случае не заработает - данные телеграмма. Как я говорил выше, ЮзерБота, как бы входит в твой аккаунт. Ему конечно же нужны данные. Это и есть api_id и api_hash ✈️ Заходим на сайт https://my.telegram.org/apps пишем свой номер телефона, на котором тг, и вводим код. ❔Это безопасно, это сайт телеграмма Далее там будет бланк, вы его заполняете. Данные можете писать какие угодно, они ни на что не влияют. Вы должны дойти то страницы с конфигурацией приложение (App Configuration). Там копируете app api_id и app api_hash, и вставляете в код, там где создавали екземпляр бота (app = ...)
from pyrogram import Client, filters

app = Client("тут", "ваши", "данные")

@app.on_message(filters.commands(["start"], prefixes=".") & filters.me)
async def start(_, msg):
    pass

app.run()
🔎Итоги: Сегодня мы разобрались в базовой структуре ЮзерБота: поговорили про нужные классы, обработчики, их порядок, API данные. В следующем посте поговорим про отправку сообщений, редактирование, и тп. 🐍Pythoner

🔥Pyrogram (в простонародье "Пирог") — это мощная библиотека для создания так называемых User Ботов для телеграмма. 🤖ЮзерБот
🔥Pyrogram (в простонародье "Пирог") это мощная библиотека для создания так называемых User Ботов для телеграмма. 🤖ЮзерБоты - это скрипты которые работают от лица личного аккаунта и могут выполнять все тоже что и человек. ➡️Например, можно запрограммировать автоответчик, который будет автоматически отвечать на определенные сообщения. ➡️Но в основном ЮзерБоты используют как дополнения к телеграму, например, встроенный калькулятор. Вы скорее всего уже видели их. Кто-то пишет комманду, скажем, .calc 2+2, а скрипт все считает и изменяя сообщение, выводит ответ. ⚡️Именно такого юзербота мы и будет создавать в следующих постах, так что подписывайся на канал, и включай уведомления! 🐍Pythoner

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

✈️Pyppeteer - это библиотека Python для автоматизации браузера Chromium с помощью Puppeteer JavaScript API. Это мощный инстру
✈️Pyppeteer - это библиотека Python для автоматизации браузера Chromium с помощью Puppeteer JavaScript API. Это мощный инструмент для веб-скрейпинга, тестирования и автоматизации веб-браузера. ➡️Инсталляция библиотеки Pyppeteer Установка Pyppeteer проста и прямолинейна. Все, что вам нужно, это Python 3.6 или выше. Установите Pyppeteer, используя pip: pip install pyppeteer. В процессе установки Pyppeteer скачает последнюю версию Chromium. ➡️Функциональные возможности Pyppeteer Pyppeteer предлагает богатый набор функций для автоматизации веб-браузера. Вы можете автоматизировать ввод данных, клики по ссылкам, скачивание файлов и многое другое. ➡️Примеры использования Pyppeteer Одним из самых распространенных применений Pyppeteer является создание снимков веб-страниц. Все, что вам нужно сделать, это создать экземпляр браузера, открыть новую страницу, перейти на URL и сделать снимок.
import asyncio
from pyppeteer import launch

async def take_screenshot(url, save_path):
    browser = await launch()
    page = await browser.newPage()
    await page.goto(url)
    await page.screenshot({'path': save_path})
    await browser.close()

url = '<https://www.example.com>'
save_path = 'example.png'
asyncio.get_event_loop().run_until_complete(take_screenshot(url, save_path))
➡️Pyppeteer также может быть использован для автоматического тестирования веб-приложений, включая взаимодействие с JavaScript и AJAX.
import asyncio
from pyppeteer import launch

async def test_website(url):
    browser = await launch()
    page = await browser.newPage()
    await page.goto(url)
    await page.click('#myButton')
    await page.waitForSelector('#myResult')
    result = await page.evaluate('document.querySelector("#myResult").innerText')
    await browser.close()
    return result

url = '<https://www.example.com>'
asyncio.get_event_loop().run_until_complete(test_website(url))
Ссылка на либу — https://pypi.org/project/pyppeteer/ 🐍Pythoner

Регистрируйтесь на главную конференцию Yandex Cloud! Большая конференция Yandex Cloud для тех, кто создаёт цифровые продукты
Регистрируйтесь на главную конференцию Yandex Cloud! Большая конференция Yandex Cloud для тех, кто создаёт цифровые продукты и решения. Вас ждут 5 тематических треков, 31 доклад, 50 экспертов, нетворкинг и общение. Участие бесплатное! Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе

✈️TOML (Tom's Obvious, Minimal Language) - это простой формат конфигурационного файла, который стремится быть более понятным
✈️TOML (Tom's Obvious, Minimal Language) - это простой формат конфигурационного файла, который стремится быть более понятным и легким для чтения, чем JSON или XML. Они обеспечивают структурированный способ хранения настроек и конфигураций для приложения. TOML использует простой синтаксис, который легко читается и понимается, что делает его идеальным для использования в качестве языка конфигурации. ➡️Как установить библиотеку toml в Python? Чтобы начать работу с TOML в Python, вам сначала нужно установить библиотеку toml. Вы можете сделать это с помощью инструмента pip, который является стандартным менеджером пакетов для Python. Просто откройте терминал и введите следующую команду: pip install toml. ➡️Как считывать TOML-конфиги в Python? Считывание TOML-конфигов в Python легко осуществляется с помощью библиотеки toml. Вы просто открываете файл с помощью встроенной функции open(), а затем используете функцию toml.load() для разбора содержимого TOML-конфига. Вот простой пример: ➡️TOML-конфиг:
[server]
host = "127.0.0.1"
port = 8000

[database]
user = "admin"
password = "secret"
➡️Python код:
import toml

config = toml.load('config.toml')
print(config)
⬆️Результат выполнения этого кода:
{
  'server': {
    'host': '127.0.0.1',
    'port': 8000
  },
  'database': {
    'user': 'admin',
    'password': 'secret'
  }
}
⬆️В этом словаре, 'server' и 'database' - это ключи, соответствующие разделам в TOML-конфиге, и они содержат под-словари с параметрами этих разделов. Вы можете получить доступ к любому параметру конфигурации, используя его ключи. Например, для получения адреса хоста сервера вы можете использовать config['server']['host']. 🐍Pythoner

➡️Понимание Keyboard.add_hotkey Функция keyboard.add_hotkey() в Python позволяет вам назначить определенную функцию на клавиа
➡️Понимание Keyboard.add_hotkey Функция keyboard.add_hotkey() в Python позволяет вам назначить определенную функцию на клавиатурный ярлык, известный как горячая клавиша. Эта функция принимает два основных аргумента: комбинацию клавиш и функцию, которая будет выполнена при нажатии горячей клавиши. Синтаксис следующий: keyboard.add_hotkey(hotkey, callback, args=(), suppress=False, timeout=3, trigger_on_release=False). Горячей клавишей может быть одна клавиша, комбинация клавиш или даже последовательность клавиш. ➡️Примеры использования Keyboard.add_hotkey Функция keyboard.add_hotkey() очень удобна для автоматизации задач и увеличения интерактивности ваших скриптов на Python. Например, вы можете использовать ее, чтобы создать простой кейлоггер, автоматизировать создание скриншотов или даже создать пользовательский ярлык для определенной задачи в вашем приложении на Python. Однако очень важно использовать эту функцию ответственно и этично, учитывая ее возможное злоупотребление. ➡️Практические примеры использования Keyboard.add_hotkey Для иллюстрации рассмотрим пример, в котором мы хотим напечатать "Привет, Мир!" при нажатии клавиш 'Ctrl + H'. Сначала нам нужно импортировать модуль keyboard. Если он не установлен, используйте pip для его установки. Затем мы определяем нашу функцию и добавляем горячую клавишу следующим образом:
import keyboard

def hello_world():
    print("Привет, Мир!")

keyboard.add_hotkey('ctrl + h', hello_world)
keyboard.wait()
⬆️В приведенном выше коде, каждый раз при нажатии 'Ctrl + H', вызывается функция hello_world, и "Привет, Мир!" выводится на консоль. 🐍Pythoner

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

➡️Использование библиотеки Selenium Первый шаг в создании автообновления страницы - использование библиотеки Selenium. Seleni
➡️Использование библиотеки Selenium Первый шаг в создании автообновления страницы - использование библиотеки Selenium. Selenium - это набор инструментов для автоматизации веб-браузеров. Он позволяет Python взаимодействовать с браузером, как если бы это делал человек. С помощью Selenium мы можем открыть веб-страницу и обновить ее. ➡️Пример кода:
from selenium import webdriver

driver = webdriver.Firefox() # или любой другой браузер
driver.get('<http://www.example.com>')
➡️Использование метода refresh Второй шаг - это использование метода refresh в Selenium. Этот метод позволяет обновить текущую страницу. В комбинации с библиотекой time в Python, мы можем настроить скрипт так, чтобы он автоматически обновлял страницу через определенные интервалы времени. ➡️Пример кода:
import time

while True:
    driver.refresh() # обновляем страницу
    time.sleep(10) # ждем 10 секунд
🐍Pythoner

Repost from IT memer
photo content

242313213.png1.71 MB

💬HTTP GET Этот метод извлекает ресурс с сервера. Он идемпотентен: несколько идентичных запросов возвращают один и тот же рез
💬HTTP GET Этот метод извлекает ресурс с сервера. Он идемпотентен: несколько идентичных запросов возвращают один и тот же результат. 💬HTTP PUT Этот метод обновляет или создает ресурс. Он также идемпотентен: несколько идентичных запросов обновят один и тот же ресурс. 💬HTTP POST Этот метод используется для создания новых ресурсов. Он не идемпотентен: два одинаковых POST-запроса создадут дублированные ресурсы. 💬HTTP DELETE Этот метод используется для удаления ресурса. Он идемпотентен: несколько идентичных запросов удалят один и тот же ресурс. 💬HTTP PATCH Метод PATCH применяется для частичного изменения ресурса. 💬HTTP HEAD Метод HEAD запрашивает ответ, идентичный GET-запросу, но без тела ответа. 💬HTTP CONNECT Метод CONNECT устанавливает туннель к серверу, идентифицированному целевым ресурсом. 💬HTTP OPTIONS Этот метод описывает параметры связи для целевого ресурса. 💬HTTP TRACE Этот метод выполняет тест возврата сообщения по пути к целевому ресурсу. 👀Так же прикрепляю фото без сжатия если будет плохо видно на основном фото 🐍Pythoner

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

➡️Установка модуля requests Первым шагом является установка модуля requests, если он еще не установлен. Он является одним из
➡️Установка модуля requests Первым шагом является установка модуля requests, если он еще не установлен. Он является одним из основных модулей Python, которые используются для отправки HTTP-запросов. Вы можете установить его, используя pip: pip install requests. ➡️Скачивание файла Скачивание файла с помощью requests довольно прямолинейно. Вам просто нужно сделать запрос к URL-адресу файла, который вы хотите скачать, а затем записать ответ в файл. Вот пример кода, который скачивает изображение с интернета:
import requests
url = '<https://example.com/image.jpg>'
response = requests.get(url)
with open('image.jpg', 'wb') as f:
    f.write(response.content)
➡️Работа с ошибками Важно обрабатывать возможные ошибки при скачивании файла. Если файл не найден или произошла другая ошибка, requests вернет код ответа, отличный от 200. В этом случае вы должны проверять статус ответа перед записью файла. ➡️Вот пример кода, который скачивает реальный pdf файл с сайта:
import requests

headers = {'referer': 'https://nottka.com/4364-yoshinao-nakada-etude-allegro.html'}
response = requests.get('https://nottka.com/index.php?do=download&id=4420', headers=headers)
with open('4420.pdf', 'wb') as file:
    file.write(response.content)
🐍Pythoner

➡️Что такое cProfile? cProfile - это модуль в стандартной библиотеке Python, который предоставляет возможность профилирования
➡️Что такое cProfile? cProfile - это модуль в стандартной библиотеке Python, который предоставляет возможность профилирования кода. Он позволяет измерить время выполнения каждой функции в вашем коде, а также количество вызовов каждой функции. Это делает его отличным инструментом для определения тех мест в вашем коде, которые являются узкими местами и могут быть оптимизированы. ➡️Как использовать cProfile? Использование cProfile довольно просто. Вы просто импортируете модуль и вызываете функцию cProfile.run(), передавая ей строку кода, который вы хотите проанализировать. Вы также можете использовать cProfile в качестве командной строки, передав ему имя файла Python, который вы хотите профилировать. Результаты профилирования могут быть отсортированы по различным критериям, таким как общее время выполнения, время выполнения на вызов и количество вызовов. ➡️Пример использования cProfile:
import cProfile

def sum_of_numbers():
    return sum(range(100000))

cProfile.run('sum_of_numbers()')
⬆️В этом примере мы профилируем функцию sum_of_numbers, которая суммирует числа от 0 до 100000. 🐍Pythoner