__EasyPy__
32 subscribers
147 photos
2 videos
1 file
33 links
Пишем интересные статьи, тесты для языка Python, проводим занятия по языку программирования Python, выполняем заказы...
Наше сообщество ВК: https://vk.com/easypy
Наш чат: https://t.me/EasyPy
Наш партнер: https://t.me/backenddt
Download Telegram
С чего начинается разработка ПО? С освоения минимальных возможностей вашего языка программирования. На сайте нашего партнера "Happy Python" мы собрали все основные типы данных, которые ежедневно используются разработчиками.


https://happypython.ru/2022/10/24/basic-python-data-types/

#easypy #happy_python #python #developer
👍2
Сборщик мусора в Python🚮🗑

Сборщик мусора в Python - это механизм, который отвечает за процесс очистки общей памяти компьютера. При сборке мусора кусочек памяти, который использовался освобождается для использования другими программами или под другие ресурсы.

Так как объекты порой бывают разные, одни используются разово, а другие постоянно придумали проводить проверку и добавлять объекты в поколения. Существует три поколения 0, 1 и 2.

Узнать как настроены поколения можно вызвав - print(import gc; gc.get_threshold())

#easypy #python #memory #interview
👍1
😎 django-cleanup - автоматическое удаление ненужных файлов❗️

💭В Django существует интересная проблема: при удалении записи модели, которая содержит поле типа FileField или ImageField, файл сохраненный в этом поле, не удаляется.

☝🏻Для устранения данной проблемы, существует дополнительная библиотека django-cleanup, которая отслеживает появление ненужных файлов и сама их удаляет.

😃 Порядок установки смотри ниже 👇🏻👇🏻👇🏻

#easypy #python #django
👍1
❗️Менеджер памяти в Python (освобождение памяти) - школа бэкенда от Яндекса😎😎

💭Для управления памятью и своевременного освобождения ее Python хранит число ссылок на каждый объект. Когда число ссылок становится равно нулю - объект сразу удаляется из памяти.

☝🏻Посмотреть количество ссылок на объект можно вызвав - print(sys.getrefcount(object))

За освобождение памяти в python отвечает сборщик мусора. О нем подробнее поговорим позже❗️

#easypy #python #memory #programming
👍2
❗️Менеджер памяти в Python (выделение памяти) - школа бэкенда от Яндекса😎😎

💭Управление памятью в Python включает в себя все объекты и структкры данных. Менеджер памяти обеспечивает управление всеми объектами в Python.

💾При работе с объектами Python выделяет себе блоки памяти, которые называется - арена (256 кб). Внутри арена нарезана на пулы ( 4 кб ), в которых находятся блоки размером от 16 до 512 байт.

🔓Для каждого объекта подбирается подходящий по размеру блок. Если объект удаляется, то его блок помечается как свободный и используется в дальнейшем для новых объектов.

#easypy #memory #python
👍1🔥1
Поговорим о декораторе property❗️

💭@property-это один из самых популярных python-декораторов.

Данный декоратор используется для обозначения метода класса как атрибута этого класса. То есть если декоратор применен к методу класса, то данный метод можно вызвать как атрибут класса.

ВНИМАНИЕ! Метод к которому применен декоратор property должен имень единственный аргумент self. То есть при обращении к атрибуту нельзя передавать ему никакие аргументы.

#easypy #python #programming
👍2
😃Вопрос с собеседования в компанию ЯндексПрактикум

❗️Расскажите чем отличаются select_related от prefetch_related?

💭select_related и prefetch_related - это инструменты для оптимизации работы с БД в Django.

select_related работает путем создания соединения SQL и включения полей связанного объекта в оператор SELECT. Благодаря этому, select_related получает связанные объекты в том же запросе к БД.

А prefetch_related выполняет отдельный поиск для каждой связи и выполняет "объединение" данных в Python.

#easypy #python #django #interview #yandex
👍2
❗️🚀Вопрос с собеседования в компанию AGIMA.AI

Чему равна переменная B?
A = 1
B = A
A += 1
print(B)

Что происходит у нас выше?
Содается переменная А, которая ссылается на объект 1. Далее создается переменная В, коорая так же ссылается на объект 1.
Следующим шагом, переменная А ссылается на на новый объект 2, который только что создался (А = А + 1).

При выводе переменной В в консоль, она остается ссылаться на тотже объект 1.

#easypy #python #interview
👍1
⁉️Что такое аннотации типов в python?

💬💯Аннотации типов – это возможность, описанная в PEP484, которая позволяет добавлять подсказки о типах переменных. Они используются, чтобы информировать читателя кода, каким должен быть тип переменной. Это придаёт немного статический вид коду на динамически типизированном Python.
Достигается это синтаксисом: <тип> после инициализации / объявления переменной.💣

#easypy #python
👍1🔥1
Для чего предназначена функция map() в Python?😑
💬💯Иногда, нам необходимо выполнить одну и ту же операцию со всеми элементами спиcка например, выполнить какие-либо операции и создать новый список с новыми значениями.
👉🏻Одним из самых быстрых способов сделать такое - это использовать цикл for, но можно просто использовать map().

👌🏻Функция map() принимает функцию, которую после применит к каждому элементу итерации и итерацию (или несколько итераций)

Пример:
arr_1 = [1,2,3] # исходный список
arr_2 = map(lambda x: x * 2, arr_1) # создаем новый список. Передаем в map функцию lambda x: x *2 и итерируемый объект, в нашем случае наш список arr_1. Функция map применит нашу lambda-функцию к кадому элементу нашего списка и вернет новый список с новыми значениями
print(arr_2) # распечатаем результат
[2, 4, 6] # новый список с новыми элементами массива

#easypy #python #interview
👍1
⁉️Вопрос с собеседования в компании AGIMA.AI 2022 год

💬Вопрос:
A = [1, 2]
B = A
A = None
print(B)

Суть таково вопроса проверить ваши знания на тему спиков, их создания и на тему сслылок на объекты.
Как известно список содержит в себе сслыки на отдельные объекты. Получается наш список А содержит две ссылки на объекты 1 и 2.
Когда мы В присваиваем А, создаются новые сслыки на объекты 1 и 2, но теперь от переменной В. В этом положении переменные А и В ссылаются на одни и те же объекты 1 и 2.
Потом переменной А присваивается None, но переменная В осталась также ссылаться на объекты 1 и 2, то есть не изменилась.

💯Ответ: [1, 2]

#easypy #python #interview
👍1
⁉️ Вопрос со школы backend разработки от Яндекс..

Как реализованы списки в Pyhton?💯

💬 В Python списки реализованы как динамический массив. Т.е. как набор элементов одинакового размера и расположенных поряд друг за другом. При объявлении инициализируется облать памяти с какой-то определенной заранее размерностью. Во время добавления елементов, как только количество элементов превысит заранее выделенную облать памяти, она снова расширяется с какаим-то запасом.
В Python размер размер области памяти растет как 0, 4, 8, 16,и т.д..

#easypy #python #interview
💬 Как выполняются выражения с разными числовыми типами в Python?

В выражениях Python допускается смешивать числовые типы, т. е. Можно складывать целые числа с числами с плавающей запятой, или перемножать комплексное число целым.
В выражениях с разными числовыми типами, Python сначала преобразует операнды у типу самого сложного операнда, а затем выполняет операции над операндами уже одного числового типа.
После выполнения выражения Python возвращает значение числового типа самого сложного оператора, т. к. оба операнда были преобразованы в один, самый сложный.

#easypy #python #interview
🔥2
Прогресс выполнения программы

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

Привычный range можно заменить на trange для визуализации прогресса. А для итерации по какой-либо последовательности, достаточно просто передать её в функцию tqdm. Также модуль хорошо себя зарекомендовал и в Jupyter Notebook.

Кстати, интересный факт – название tqdm произошло от арабского слова "taqaddum" (تقدّم), которое означает "прогресс," а также это ещё и сокращение от "я тебя сильно люблю" на испанском (te quiero demasiado).

#easypy #python #programming
👍3
Что делает асинхронный ввод-вывод?🤖

Как вы уже знаете, некоторые операции в Python ограничены ввода-вывода или быстродействием процессора. Это означает что для выполнения вашей программы (с операциями ограниченными быстродействием процессора или со счетными операциями) необходимо либо больше времени, либо большей прокачки вашего ПК.

Для решения этой проблемы разработчики разработали библиотеку asyncio, которая позволяет использовать асинхронный ввод-вывод.
Что же делает и как работает асинхронный ввод-вывод?

Асинхронный ввод-вывод позволяет при встречи операции с ограниченным быстродействием процессора или со счетной операцией(ограничение ввода-вывода) приостановить выполнение операции в реальном режиме и запустить его в фоновом режиме. И пока операция выполняется в фоновом режиме, выполняется другой код.

Вывод: Асинхронный ввод-вывод позволяет выполнять одновременно много операций, другими словами ускорить работу кода

#python #asyncio #асинхронный_код
🔥2
Разделение Команд и Запросов (CQS) - это принцип проектирования программного обеспечения, который подчеркивает различие между командами, изменяющими состояние, и запросами, извлекающими информацию.

Подробнее тут:
https://happypython.ru/2024/01/23/%d0%bf%d1%80%d0%b8%d0%bd%d1%86%d0%b8%d0%bf-%d1%80%d0%b0%d0%b7%d0%b4%d0%b5%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4-%d0%b8-%d0%b7%d0%b0%d0%bf%d1%80%d0%be%d1%81%d0%be%d0%b2/

#python #cqs
👍2
📌Организация асинхронной работы между двумя сервисами🧐

У меня была некая задача, организовать взаимодействие между сервисами, с большой нагрузкой.⁉️

📜Пример того как это реализовано:
1. В сервисе 1 есть АПИ Х1, за которую дергает сервис 2 и получает в ответ статус 204.
2. В это время сервис 1 отправляет по АПИ запрос на сторонний сервер и получает ответ.
3. Сервис 1 дергает АПИ Х2 на сервисе 2, куда отправляет информацию полученную от стороннего сервера и получает в ответ статус 204.
4. Соответственно сервис 2 отправляет данные в кафку под определенным ключем или в grpc.

Все сообщения проходят с уникальным идентификатором, чтобы знать кому какой ответ, реализовано кэширование с помощью redis.

Описание очень примитивное, но вроде как ясное, хочется узнать возможные варианты более опытных разработчиков и критику по конкретному решению⁉️

📌https://vk.com/easypy?amp%3Bref=feed_notifications&w=wall-163266641_1511%2Fall

#python #fastapi #API #kafka
🔥1
Небольшие новости касающиеся Django (не много устаревшие)!

Вышел Django 5!
Если кто-то надеялся что 5 версия будет более асинхронной, например я наделялся, это оказалось не так((

Что нового в Django 5.0.
- Фасетные фильтры в админ-панели;
- Упрощенные шаблоны для отображения полей формы;
- Значения по умолчанию, вычисляемые в базе данных;
- Поле модели, создаваемое базой данных;
- Больше вариантов объявления выбора полей;
- и другие незначительные нововведения.

Django 5.0 поддерживает Python 3.10, 3.11 и 3.12.

Источник: https://www.djangoproject.com/weblog/2023/dec/04/django-50-released/

#python #django #news
👏1
Порядок выполнения SQL-запросов

1. FROM - Откуда данные?
2. JOIN - Как объединяем данные?
3. WHERE - Какие строки оставляем?
4. GROUP BY - Как группируем?
5. HAVING - Какие группы оставляем?
6. SELECT - Какие столбцы выбираем?
7. ORDER BY - В каком порядке сортируем?
8. LIMIT - Сколько строк выводим?

Понимание порядка выполнения SQL-запросов помогает эффективнее писать запросы, избегать ошибок и оптимизировать производительность. Логический порядок выполнения может отличаться от порядка, в котором мы пишем запросы, но он является ключом к правильному пониманию работы SQL.

#sql #python #backend
👍3🔥1
Forwarded from Backend development 💻
Microservices.with.FastAPI промо на русском.pdf
3.2 MB
Создание микросервисов Python
с помощью FastAPI
на русском.

Любительский перевод от админа @happypython_team 😎

Описание:
Создавайте безопасные, масштабируемые и структурированные микросервисы Python — от концепций проектирования до инфраструктуры

Цена 800р, писать: @alextezin

#fastapi #python #book
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4