#python python... PYTHON 🔛 🚀
11 subscribers
912 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Хитрый Питон
Вышел MyPy 1.0.0, из интересных изменений:

- На 40% быстрее, я очень рад, потому что на более-менее большой кодовой базе он раньше тормозил как не в себя
- Добавили сообщения о undefined variables, использовании переменной до ее объявления. Кажется, тот же flake8 нормально это отлавливает, но все равно выглядит небесполезно
- Добавили поддержку типа Self (есть в 3.11, для более ранних версий надо использовать typing_extensions)
- Реализовали поддержку ParamSpec, но я если честно еще ни разу ParamSpec не использовал в реальном коде, но если интересно, это PEP 612

И еще из интересного, они на конец перешли на semver и теперь будет проще по номерам версий понимать, будут ли подводные камни при обновлении 🙂

Подробнее вот тут https://mypy-lang.blogspot.com/2023/02/mypy-10-released.html
#SBJ
#linters in #PyCharm
#googling
#ChatGPT_answer:

PyCharm provides built-in support for several linters, including #Pylint, #Flake8, and #mypy. Here's how to use each of these linters:

Pylint: Pylint is a popular linter for Python that checks for programming errors, code style, and code complexity. To use Pylint in PyCharm, follow these steps:

Go to Settings/Preferences > Editor > Inspections.
Search for "Pylint" and check the box to enable it.
Click "Configure" to customize the Pylint settings, such as the severity of the issues and the Pylint executable path.

Flake8: Flake8 is another popular linter that combines several other linters, including Pylint, PyFlakes, and McCabe. To use Flake8 in PyCharm, follow these steps:

Go to Settings/Preferences > Editor > Inspections.
Search for "Flake8" and check the box to enable it.
Click "Configure" to customize the Flake8 settings, such as the severity of the issues and the Flake8 executable path.

mypy: mypy is a static type checker for Python that can help catch type-related bugs before runtime. To use mypy in PyCharm, follow these steps:

Go to Settings/Preferences > Editor > Inspections.
Search for "mypy" and check the box to enable it.
Click "Configure" to customize the mypy settings, such as the severity of the issues and the mypy executable path.

In general, it's a good idea to use multiple linters to catch as many issues as possible. You can enable and configure multiple linters in PyCharm and see the results in the editor and the #inspection #tool window.
👺 Маскируем данные с Python

Каким же образом можно свободно передавать, в некоторых случаях даже хранить данные, не переживая о потенциальных утечках? Именно здесь в игру вступает анонимизация данных путём маскирования.

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

Anonympy – простая, но богатая своим функционалом библиотека, обладающая набором инструментов и функций для анонимизации и маскировки данных. На текущий момент проходит бета-тестирование функционала по анонимизации изображений и цензурированию текста в PDF-документах, но об этом в другой раз.

pip install anonympy

- Читать дальше
- Зеркало
- Anonympy

@data_analysis_ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Конвертируем строку в словарь
Использование метода
ast.literal.eval()

Сегодня продолжим конвертировать строку в словарь. Смотреть прошлый гайд: Использование метода json.loads()

Еще одна функция, которую применяют для преобразования строк в словари, — ast.literal.eval(). Чтобы ее использовать, нужно импортировать библиотеку ast.
🐼 По маршруту SQLite - Pandas: 7 основных операций

💬 Когда я занимался разработкой iOS, еще не было устоявшихся решений для работы с базами данных мобильных приложений, так что мне пришлось реализовывать свою собственную БД.

Выбор пал на SQLite, упрощенный механизм для управления реляционными базами данных.

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

Читать статью
Конвертируем строку в словарь
Использование метода
json.loads()

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

Мы можем преобразовать строку в словарь с помощью функции json.loads(). Чтобы ее использовать, нужно импортировать модуль json.
Forwarded from Инжиниринг Данных (Dmitry)
Наконец-то я закончил замечательную книгу, наверно лучшую в своем роде - Python Crash Course (3rd edition).

Книга состоит из 2х частей:
1) теория + упражнения про обычные питоновские вещи, но все объяснено очень понятным языком (наверно за это очень любят эту книгу). Я давным-давно закончил часть1.
2) а вот 2ю часть все откладывалась. Это набор разных проектов на питоне.

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

Проекты:
- сделать игру на PyGame, используется много файлов и классов
- визуализация данных с помощью Matplotlib, Plotly, генерация данных
- работа с API на примере GitHub, HackerRank
- достаточно большой проект на Django, в котором будет много HTML.

PyGame и Django мне вряд ли понадобятся, но моя задача просто чаще использовать питон, и эти проекты отлично подошли. Даже промелькнула мысль сделать английскую версию datalearn на django, но быстро ее отбросил.

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

Что вам еще по питону нравится?
📆🕰 Работаем с датой и временем

С помощью следующего фрагмента кода вы сможете с легкостью узнать год/месяц/день/час/минуту/секунду настоящего времени.
#python
📑📌 Методы работы со списками

#python
💮📝 Шпаргалка по множествам

#python
🦕🧑🏻‍🌾 Курс по Django 3

▪️1. Что такое Django. Курс по изучению Django 3
▪️2. Установка django 3. How install django 3
▪️3. Введение в командную строку. Начало работы с терминалом Django
▪️4. Создание проекта на Django.
Django start project
▪️5. Состав проекта Django
▪️6. Запускаем локальный сервер разработки Django. Run server django

📺 Просмотр
#python
Стандартная_библиотека_Python_3_Справочник_с_примерами.pdf
47 MB
📙 Даг Хеллман «Стандартная библиотека Python 3. Справочник с примерами»

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

Каждому модулю посвящен отдельный раздел, содержащий ссылки на дополнительные ресурсы, что делает эту книгу идеальным учебным и справочным руководством.
#python
📊📝Шпаргалка по Pandas

Эта библиотека для анализа данных прекрасно себя зарекомендовала в Data Science.

Такая шпаргалка поможет в построении различных диаграмм с использованием pandas.

#python
🔁🔄 Фишки и лайфхаки для циклов

Python является одновременно традиционным и нетрадиционным, когда речь идет о синтаксисе циклов.
В этом языке нет традиционной структуры for(init; condition; incrment) из трех частей, и потому циклы тут выглядят проще.

Тем не менее, написать хороший цикл – не всегда простая задача, но есть несколько фишек и лайфхаков, о которых надо знать.
#python
🅾️🆖 Про О-нотацию

Про логарифмическую сложность, квадратичную, экспоненциальную и другие типы.

🟢 Сложность O(n log n)

Фактически, все эффективные алгоритмы сортировки представляют собой O(n log n) сложность: сортировка слиянием (merge), пирамидальная сортировка (heap), быстрая сортировка, а еще Timsort (изобретенный Тимом Питерсом алгоритм, который используется методом sort() в Python).

Например, отсортировать n книг в алфавитном порядке, как раз, представляет O(n log n) сложность.

🔵 Сложность O(n^2)

Если требуется найти повторяющиеся книги на несортированной полке, это уже квадратичная сложность. Например, на полке стоят 100 несортированных книг, мы берем одну и ищем дубли среди остальных 99, потом берём другую и снова проверяем оставшиеся. Очень затратно: проверка 100 книг займёт 100 × 100, или 10 000 шагов, причем проверка 200 займёт уже 40 000 шагов - в четыре раза больше.

В реальном мире, именно для этого нам необходимо знание BIG O. Чтобы не писать алгоритм O(n^2), когда можно было написать O(n log n) или O(n).

Итак, остались те, чьи имена нельзя произносить: экспоненциальная O(2^n) и факториальная сложность O(n!).

🟣 Сложность O(2^n)

Допустим, на полке 2 книги, и мы будем собирать все возможные комбинации книг: первая комбинация - пустая полка, вторая - книга A, третья - книга B и последняя - обе книги на полке. Для 3 книг получим уже 8 комбинаций. Так вот, это - экспоненциальный алгоритм. Причем, обратите внимание, нас интересуют не перестановки, а только комбинации.

🔴 Сложность O(n!)

Перестановки, как раз, будут отвечать за факториальную сложность: если у нас на полке 3 книги, все варианты перестановок - 3!.

И оба этих алгоритма крайне плохо масштабируются: даже для малых n они быстро становятся невыполнимыми за разумное время.

💡 Наконец переходим от теории к практике!

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

Грубо говоря, существует несколько «контрольных» точек, которые могут нам помочь определить большую О. Учитывая, что n - это размер входных данных, можно сказать:

1. Если код не оперирует входными данными, это O(1).

2. Если код итерируется по данным, это O(n).

3. Два вложенных цикла, каждый из которых проходит по входным данным, дают сложность O(n^2).

4. Простой вызов функции не считается отдельным шагом, считаем только шаги внутри функции.

5. Если в коде есть конструкция «разделяй и властвуй», это O(log n).

6. Если «разделяй и властвуй» выполняется для каждого элемента во входных данных, это O(nlog n).

7. Если код проходит по каждой возможной комбинации значений в n данных, это O(2^n) или другая экспоненциальная сложность (3^n, 4^n…).

8. Если рассматриваются все возможные перестановки значений в данных, это O(n!).

9. Если код предполагает сортировку данных, это будет как минимум O(nlog n).

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

Уже зная некоторые флаги, как вы думаете, какая сложность у этих методов python?

- .append()
- .insert()
- .remove()
- .sort()
- цикл for

#python
🌀🅾️ Абстракция в ООП

Представьте, что водитель едет в нашей машине по оживлённому участку движения.
Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерён в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться).
Однако, руль, педали, указатель поворота (ну и, возможно, пепельницу) он будет использовать регулярно.

Абстрагирование – это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция – это набор всех таких характеристик.

Если бы для моделирования поведения автомобиля приходилось учитывать химический состав краски кузова и удельную теплоёмкость лампочки подсветки номеров, мы никогда бы не узнали, что такое NFS.

#python
🎊🎐 Скрытые сокровища Python - трюки

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

👆🏻Читать
#python
⚙️🪬Управление производительностью с Python 3.12

Начиная с Python 3.12, интерпретатор может работать в специальном режиме, который позволяет функциям Python появляться в выводе профилировщика perf.

В данной статье демонстрируется, как это помогает сократить выполнение скрипта с 36 секунд до 0,8!

👆🏻Читать
#python
♑️⤵️ Наследование в ООП

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

Нам необходимо выпустить целый модельный ряд автомобилей: седан, универсал и малолитражный хэтч-бэк.
Очевидно, что мы не собираемся проектировать новый автомобиль с нуля, а, взяв за основу предыдущее поколение, внесём ряд конструктивных изменений.
Например, добавим гидроусилитель руля и уменьшим зазоры между крыльями и крышкой капота, поставим противотуманные фонари.
Кроме того, в каждой модели будет изменена форма кузова.

#python