При работе с различными API-запросами, чаще всего на ум приходит библиотека
Пример выполнения GET-запроса:
В этом примере выполнен базовый GET-запрос. Метод
Пример выполнения асинхронного POST-запроса:
В этом примере мы открыли асинхронный клиент в контекстном менеджере для выполнения запроса. В метод
Пример выполнения stream-запроса:
Этот пример показывает, как
requests. Она отлично выполняет свою функцию, однако, она не поддерживает асинхронное выполнение. На замену requests пришла новая библиотека httpx.Пример выполнения GET-запроса:
response = httpx.get("https://reqres.in/api/users/2")
print(response.status_code)
print(response.json())В этом примере выполнен базовый GET-запрос. Метод
.get() возвращает объект Response, который содержит статус ответа, заголовки и данные ответа.Пример выполнения асинхронного POST-запроса:
async def fetch_data():
async with httpx.AsyncClient() as client:
response = await client.post(
"https://reqres.in/api/users", data={"name": "Napkin", "job": "Author"}
)
print(response.status_code)
print(response.json())
asyncio.run(fetch_data())
В этом примере мы открыли асинхронный клиент в контекстном менеджере для выполнения запроса. В метод
.post(), также передали аргумент data, содержащий словарь данных.Пример выполнения stream-запроса:
async def fetch_data():
async with httpx.AsyncClient() as client:
async with client.stream(
"POST",
"https://api.openai.com/v1/chat/completions",
json={
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "You are a assistant."},
{"role": "user", "content": "Hello!"},
],
"stream": True,
},
headers={
"Authorization": "Bearer <token>"
},
) as response:
async for chunk in response.aiter_text():
yield chunk
async def main():
async for data in fetch_data():
print(data)
asyncio.run(main())
Этот пример показывает, как
httpx может использоваться для выполнения запросов в режиме "стриминга".5🔥5
Продолжая опрос с прошлого вторника. Какой формат постов вам более интересен? Выберите один или несколько вариантов.
Anonymous Poll
54%
Только текстовые посты
23%
Текстовый и краткий пересказ в Shorts формате
26%
Текстовый и полноценная видео версия
8%
Меньше текстовых постов, больше видео
33%
Больше интерактивных задач с текстовым или видео разбором
750🔥3👎1👏1
Telegram Stars лимиты и вывод
Автор: Иван Ашихмин
Актуальная информация по выводу Telegram Stars и лимитам.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Telegram_бот #Код_на_салфетке #Telegram_Stars #звёзды #Telegram_канал #лимиты #вывод
Автор: Иван Ашихмин
Актуальная информация по выводу Telegram Stars и лимитам.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Telegram_бот #Код_на_салфетке #Telegram_Stars #звёзды #Telegram_канал #лимиты #вывод
10 8❤🔥3🔥3
Сравнение hash map С/C++ с dict Python (часть 1)
Автор: Eugene Kaddo
Данная статья расскажет чем отличаются hash map C/C++ от dict Python и как их реализовать.
Читать пост в Telegram
Файлы к посту, можно получить в боте по коду: 301030
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #Сравнение_Python_и_C #C #C++ #hash_map #hash_table #dict
Автор: Eugene Kaddo
Данная статья расскажет чем отличаются hash map C/C++ от dict Python и как их реализовать.
Читать пост в Telegram
Файлы к посту, можно получить в боте по коду: 301030
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #Сравнение_Python_и_C #C #C++ #hash_map #hash_table #dict
🔥7👍1
Записали новое видео, посвящённое выводу и лимитам Telegram Stars.
В видео поменяли оформление, расскажите, как вам?
Смотреть на YouTube.
Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!
А если у вас проблемы с доступом к YouTube, то видео можно посмотреть и на других платформах:
- Ссылка на VK Video
- Ссылка на Dzen
- Ссылка на RuTube
- Ссылка на "Платформу"
В видео поменяли оформление, расскажите, как вам?
Смотреть на YouTube.
Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!
А если у вас проблемы с доступом к YouTube, то видео можно посмотреть и на других платформах:
- Ссылка на VK Video
- Ссылка на Dzen
- Ссылка на RuTube
- Ссылка на "Платформу"
🔥10 2👍1
Приветствую всех, друзья!
Пятница наступила, а это значит, что настало время для нашего еженедельного кинопоста. Сегодня я рад представить вам захватывающий триллер по рекомендации одного из наших подписчиков.
Этот фильм погружает нас в мир хакеров и цифровых технологий, где границы между реальностью и виртуальностью становятся всё более размытыми. Главный герой, молодой и талантливый хакер Бенджамин, стремится выйти из тени и стать известным. Но его путь к славе оказывается не таким простым, как он предполагал.
Фильм: Кто я
Год: 2014
"Кто я" — это не просто триллер, это глубокий взгляд на современное общество и его зависимость от технологий. Фильм поднимает важные вопросы о безопасности, анонимности и личной ответственности в цифровую эпоху. Приготовьтесь к напряжённому и увлекательному просмотру, который заставит вас задуматься о том, кто мы на самом деле в этом мире информации и иллюзий.
Устраивайтесь поудобнее, включайте фильм и наслаждайтесь просмотром!
Пятница наступила, а это значит, что настало время для нашего еженедельного кинопоста. Сегодня я рад представить вам захватывающий триллер по рекомендации одного из наших подписчиков.
Этот фильм погружает нас в мир хакеров и цифровых технологий, где границы между реальностью и виртуальностью становятся всё более размытыми. Главный герой, молодой и талантливый хакер Бенджамин, стремится выйти из тени и стать известным. Но его путь к славе оказывается не таким простым, как он предполагал.
Фильм: Кто я
Год: 2014
"Кто я" — это не просто триллер, это глубокий взгляд на современное общество и его зависимость от технологий. Фильм поднимает важные вопросы о безопасности, анонимности и личной ответственности в цифровую эпоху. Приготовьтесь к напряжённому и увлекательному просмотру, который заставит вас задуматься о том, кто мы на самом деле в этом мире информации и иллюзий.
Устраивайтесь поудобнее, включайте фильм и наслаждайтесь просмотром!
👍4🔥3 1
Что выведет код? №34
Anonymous Quiz
14%
10 Something 30 40
24%
TypeError
10%
10 20 30 40
40%
IndexError
12%
Something Something Something Something
🔥4👍1👏1
Записали видео с разбором задачи. Текстовая версия будет через пару часов.
Смотреть на YouTube.
Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!
А если у вас проблемы с доступом к YouTube, то видео можно посмотреть и на других платформах:
- Ссылка на VK Video
- Ссылка на Dzen
- Ссылка на RuTube
- Ссылка на "Платформу"
Смотреть на YouTube.
Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!
А если у вас проблемы с доступом к YouTube, то видео можно посмотреть и на других платформах:
- Ссылка на VK Video
- Ссылка на Dzen
- Ссылка на RuTube
- Ссылка на "Платформу"
🔥6👍1👏1
Задача с классом
Код задачи:
Разбор задачи
1. Создаём класс
2. Dunder-метод
- Извлекает элемент по индексу.
- Если элемент является списком, он оборачивает его в новый объект
- Если элемент не список, он возвращается как есть.
3. Dunder-метод
Далее создадим переменную
Рассмотрим строку
1.
2.
3.
4.
Правильный ответ:
Почему возникает TypeError?
Проблема кроется в выражении
Таким образом, код приведёт к ошибке типа
MyList, на первый взгляд, кажется простой, но в ней скрыт небольшой подвох, связанный с работой метода __getitem__ и поведением индексов. Верно ответили 17% из 29-ми человек. Самым популярным ответом с 49% голосов, оказался подвох с индексами. Давайте разберёмся.Код задачи:
class MyList:
def __init__(self, data):
self.data = data
def __getitem__(self, index):
value = self.data[index]
if isinstance(value, list):
return MyList(value)
return value
def __repr__(self):
return "Something"
lst = MyList([10, [20, 30], 40])
print(lst[0], lst[1], lst[1][1], lst[2][1])
Разбор задачи
1. Создаём класс
MyList, принимающий в конструкторе список data и, сохраняющий его во внутренний атрибут self.data.2. Dunder-метод
__getitem__ позволяет обращаться к элементам списка через экземпляры класса MyList. Он делает следующее:- Извлекает элемент по индексу.
- Если элемент является списком, он оборачивает его в новый объект
MyList.- Если элемент не список, он возвращается как есть.
3. Dunder-метод
__repr__ отвечает за строковое представление объекта и всегда возвращает строку "Something".Далее создадим переменную
lst с экземпляром класса MyList, передав ему список [10, [20, 30], 40].Рассмотрим строку
print(lst[0], lst[1], lst[1][1], lst[2][1]):1.
lst[0] — это доступ к первому элементу списка data, который равен 10. Так как это не список, метод возвращает 10.2.
lst[1] — это доступ ко второму элементу, [20, 30]. Этот элемент является списком, поэтому метод __getitem__ возвращает новый экземпляр MyList, оборачивающий этот список. При выводе в print, для этого объекта вызывается метод __repr__, который возвращает "Something".3.
lst[1][1] — это доступ ко второму элементу списка [20, 30]. Но важно заметить, что lst[1] — это объект MyList. Поэтому вызов lst[1][1] сначала вызовет метод __getitem__ у этого нового объекта, и вернёт 30, так как внутри у него хранится обычный список [20, 30].4.
lst[2] — это доступ к третьему элементу списка data, который равен 40. Этот элемент — не список, а число. Однако в коде происходит попытка доступа ко второму элементу числа 40 с помощью индекса [1], что приведёт к ошибке, потому что у целого числа нет индексов.Правильный ответ:
2. TypeError.Почему возникает TypeError?
Проблема кроется в выражении
lst[2][1]. В списке [10, [20, 30], 40] третий элемент — это число 40, и попытка выполнить операцию индексирования с ним (доступ к элементу [1]) вызывает TypeError, так как индексы применимы только к коллекциям, но не к числам.Таким образом, код приведёт к ошибке типа
TypeError, что и является правильным ответом на задачу.🔥6🥰1👏1
Пагинация в aiogram 3
Автор: Иван Ашихмин
В этом посте покажу пример создания кнопок пагинации в aiogram 3.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#aiogram #python #пагинация #inline_клавиатура #message #обработчики_сообщений #callback_класс #кнопки #handler #callback
Автор: Иван Ашихмин
В этом посте покажу пример создания кнопок пагинации в aiogram 3.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#aiogram #python #пагинация #inline_клавиатура #message #обработчики_сообщений #callback_класс #кнопки #handler #callback
11🔥5👍1👏1🤩1🥱1 1
Поделитесь с нами, пожалуйста, какими платформами для просмотра наших видео вы пользуетесь чаще всего? Выберите один или несколько вариантов ответа
Anonymous Poll
45%
1. YouTube
63%
2. YouTube (несмотря на блокировку)
20%
3. VK Video
4%
4. Dzen
13%
5. RuTube
7%
6. Платформа (слышали о ней вообще?)
4%
7. Instagram
8%
8. TikTok
🔥3
FastAPI 1. Инициализация проекта
Автор: Иван Ашихмин
В этой статье начнём изучение фреймворка FastAPI, познакомимся с Poetry и инициализируем проект.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #IDE #Django #PyCharm #Гайды #DRF #JSON #OpenAPI #FastAPI #Сервис_на_FastAPI #Swagger #Бэкэнд #Poetry #Документация #VSCode
Автор: Иван Ашихмин
В этой статье начнём изучение фреймворка FastAPI, познакомимся с Poetry и инициализируем проект.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #IDE #Django #PyCharm #Гайды #DRF #JSON #OpenAPI #FastAPI #Сервис_на_FastAPI #Swagger #Бэкэнд #Poetry #Документация #VSCode
🔥9👍2👏1
Привет, друзья!
Пятница снова с нами, а это значит, что пора для нашего традиционного кинопоста. Сегодня мы представляем вам свежий релиз. Эта динамичная картина продолжает историю о бесстрашных учёных и спасателях, которые сталкиваются с разрушительными силами природы. На этот раз их ждёт ещё более мощный и непредсказуемый ураган, который грозит уничтожить всё на своём пути.
Фильм: Смерч 2
Год: 2024
Кейт Купер, бывшая охотница за штормами, пережившая разрушительный торнадо в колледже, теперь изучает характер штормов в Нью-Йорке. Её друг Хави убеждает её вернуться на открытую местность для тестирования новой системы слежения, где она встречает Тайлера Оуэнса, суперзвезду социальных сетей, публикующего опасные приключения в погоне за штормами. Сезон штормов усиливается, и появляются невиданные ранее явления. Кейт, Тайлер и их команды оказываются в эпицентре множества штормовых систем над центральной Оклахомой, борясь за свою жизнь.
Приятного просмотра!
Пятница снова с нами, а это значит, что пора для нашего традиционного кинопоста. Сегодня мы представляем вам свежий релиз. Эта динамичная картина продолжает историю о бесстрашных учёных и спасателях, которые сталкиваются с разрушительными силами природы. На этот раз их ждёт ещё более мощный и непредсказуемый ураган, который грозит уничтожить всё на своём пути.
Фильм: Смерч 2
Год: 2024
Кейт Купер, бывшая охотница за штормами, пережившая разрушительный торнадо в колледже, теперь изучает характер штормов в Нью-Йорке. Её друг Хави убеждает её вернуться на открытую местность для тестирования новой системы слежения, где она встречает Тайлера Оуэнса, суперзвезду социальных сетей, публикующего опасные приключения в погоне за штормами. Сезон штормов усиливается, и появляются невиданные ранее явления. Кейт, Тайлер и их команды оказываются в эпицентре множества штормовых систем над центральной Оклахомой, борясь за свою жизнь.
Приятного просмотра!
🔥4
Приветствую, на связи Иван.
Хочу рассказать вам о Лёше Кластере.
Ещё до того, как я начал программировать, я смотрел ролики Лёши на YouTube и поражался его горящим глазам. Он с интересом и знанием дела пишет программы, проекты для ретро-консолей и развивает OpenSourse. Именно с его видео начался мой путь в IT и создание многих проектов, в числе которых и наш замечательный и уютный канал.
Он недавно завёл свой Telegram-канал "Лёша Кластер Live". На нём он делится своими мыслями, рассказывает о проектах, процессе записи видео.
Хочется поддержать хорошего человека рекомендацией подписаться на его канал!
Хочу рассказать вам о Лёше Кластере.
Ещё до того, как я начал программировать, я смотрел ролики Лёши на YouTube и поражался его горящим глазам. Он с интересом и знанием дела пишет программы, проекты для ретро-консолей и развивает OpenSourse. Именно с его видео начался мой путь в IT и создание многих проектов, в числе которых и наш замечательный и уютный канал.
Он недавно завёл свой Telegram-канал "Лёша Кластер Live". На нём он делится своими мыслями, рассказывает о проектах, процессе записи видео.
Хочется поддержать хорошего человека рекомендацией подписаться на его канал!
🔥7🤡2
Записали разбор вчерашней задачи!
Мы продолжаем работать над визуальной составляющей видео, напишите, как вам?
Смотреть на YouTube.
Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!
P.S. Текстовый разбор через несколько часов 😉
Мы продолжаем работать над визуальной составляющей видео, напишите, как вам?
Смотреть на YouTube.
Будем благодарны, если досмотрите видео до конца и поставите лайк. Это покажет YouTube, что видео интересное и, что его следует рекомендовать. Спасибо!
P.S. Текстовый разбор через несколько часов 😉
🔥4 3
Задача на работу с функцией и списками может показаться немного запутанной из-за множественных присвоений и изменения элементов. Давайте разберём её пошагово, чтобы понять, почему правильный ответ именно такой. Задачу решили 16% из 30-ти человек.
Код задачи:
Разбор задачи
Определяем функцию
Внутри функции сначала происходит обмен значений переменных
Теперь
Затем происходит обмен первых элементов списков:
Теперь первый элемент нового
Возвращаем кортеж изменённых списков.
Далее создаём две переменные со списками
И передаём их в функцию
После выполнения функции, результат присваивается переменным
Получается следующий результат:
- Переменная
- Переменная `c` ссылается на список
Мы только изменили первые значения списков. Поскольку список, это ссылочный тип данных, то передав список в функцию и изменив его, меняется и "оригинал".
Далее, мы делаем две замены:
- Присваиваем `a[1] = 7`. Это изменяет второй элемент списка
- Присваиваем
Выводим все четыре переменные на экран.
Правильный ответ:
Почему такой ответ?
Все переменные ссылаются на списки, и изменения отражаются на всех переменных, ссылающихся на тот же список. В Python списки изменяемы, и при передаче их в функции или присвоении переменных, фактически передаются ссылки на эти списки, а не их копии. Поэтому изменения в одном месте могут отразиться на всех переменных, ссылающихся на тот же объект.
Код задачи:
def shuffle_lists(x: list, y: list):
x, y = y, x
x[0], y[0] = y[0], x[0]
return x, y
a = [1, 2, 3]
b = [4, 5, 6]
c, d = shuffle_lists(a, b)
a[1] = 7
d[2] = 8
print(a, b, c, d)
Разбор задачи
Определяем функцию
shuffle_lists, принимающую два списка x и y.Внутри функции сначала происходит обмен значений переменных
x и y, в этой строке:x, y = y, x
Теперь
x ссылается на список, который изначально был y, а y ссылается на список, который изначально был x.Затем происходит обмен первых элементов списков:
x[0], y[0] = y[0], x[0]
Теперь первый элемент нового
x (который изначально был списком y) и новый y (который изначально был списком x) меняются местами.Возвращаем кортеж изменённых списков.
Далее создаём две переменные со списками
a = [1, 2, 3] и b = [4, 5, 6].И передаём их в функцию
shuffle_lists.После выполнения функции, результат присваивается переменным
c и d.Получается следующий результат:
- Переменная
d ссылается на список a и он имеет значение `[4, 2, 3].- Переменная `c` ссылается на список
b, и он имеет значение `[1, 5, 6].Мы только изменили первые значения списков. Поскольку список, это ссылочный тип данных, то передав список в функцию и изменив его, меняется и "оригинал".
Далее, мы делаем две замены:
- Присваиваем `a[1] = 7`. Это изменяет второй элемент списка
a, который теперь становится [4, 7, 3]. Это же изменяет и связанный список d.- Присваиваем
d[2] = 8. Так как d ссылается на тот же объект, что и a, изменяется третий элемент списка a, который теперь становится [4, 7, 8].Выводим все четыре переменные на экран.
Правильный ответ:
[4, 7, 8] [1, 5, 6] [1, 5, 6] [4, 7, 8].Почему такой ответ?
Все переменные ссылаются на списки, и изменения отражаются на всех переменных, ссылающихся на тот же список. В Python списки изменяемы, и при передаче их в функции или присвоении переменных, фактически передаются ссылки на эти списки, а не их копии. Поэтому изменения в одном месте могут отразиться на всех переменных, ссылающихся на тот же объект.
🔥5🤔1
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (26.08.2024) Пагинация в aiogram 3
Вторник (27.08.2024) Опрос
Четверг (29.08.2024) FastAPI 1. Инициализация проекта
Пятница (30.08.2024) Пятничный кинорелакс
Суббота (31.08.2024) Задача
Воскресенье (01.09.2024) Видео разбор субботней задачи и Текстовый разбор задачи
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (26.08.2024) Пагинация в aiogram 3
Вторник (27.08.2024) Опрос
Четверг (29.08.2024) FastAPI 1. Инициализация проекта
Пятница (30.08.2024) Пятничный кинорелакс
Суббота (31.08.2024) Задача
Воскресенье (01.09.2024) Видео разбор субботней задачи и Текстовый разбор задачи
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥6
