__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
🔥1
Всем привет! Как видите мы не слегка не успеваем с контентом для Вас в нашем сообществе🙁
Причина этому😑 -> трата времени на работу в реальном проекте😎

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

🥇 Будут публиковаться проблемы с которыми я сталкнулся при работе над реальным, огромным проектом (почти в режиме реального времени);
🥈Будут публиковаться статьи по наиболее частым ошибкам и способам их устранения (по мере накопления);
🥉И не много про пректирование архитектуры, паттерны проектирования и тд

Начинаем с завтрашнего дня....


#easypy #python #project #restart
🔥1
Транзакции в python

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

Чтобы пометить фрагмент кода, как относящийся к одной транзакции, обычно используют менеджер контекста atomic():

Если ошибок нет при обработкe, то транзакция полностью выполнится, если возникнет хоть одна ошибка, все что покрывает менедежер контекста atomic() не выполнится.

#easypy #python #transaction
👍2
Транзакции в Python. Дополнение

Еще один способ, как мне кажется проще того, что я приводил ранее, использовать транзакции.

Это вместо менеджера контекста использовать декоратор. Подробности на картинке.

#easypy #python #transaction #decorator
🔥2
API

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

В Python обратиться по адресу api и не только, позволяет библиотека requests. Приведу пример как это работает.
Возьмем ссылку нашего сообщества и отправим запрос.

Если интересует как распарсить полученные данные, то можете обращаться к нашему партнеру: https://vk.com/happython.

#easypy #python #api #requests
👍1
Привет коллеги-профессионалы и только начинающие в удивительном мире программирования!🖐🏻 Собрал для вас материал, который однозначно поднимет в ваших глазах среду разработки PyCharm😃 и самое главное облегчит жизнь, особенно если вы начинающий в программировании.
Поехали!
15 удобных плагинов и горячих клавиш PyCharm для начинающих питонистов👇🏻👇🏻👇🏻
https://happypython.ru/2022/10/12/plugins-and-hotkeys-pycharm/

Мы растем! Теперь наши публикации будут параллельно выходить на совместном сайте нас и нашего партнера!💥

#easypy #python #pycharm #happy_python
👍1🔥1
С чего начинается разработка ПО? С освоения минимальных возможностей вашего языка программирования. На сайте нашего партнера "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