Python | Программирование
9.87K subscribers
1.82K photos
2 videos
139 files
1.53K links
Python без границ для всех

Владелец, реклама @Ak_Mihail

Преобрести рекламное размещение: https://telega.in/c/Python_libr
加入频道
📌 Встроенные функции

Встроенные функции — это те, которые доступны из любого места в коде. print, float, int, str — всё это относится к ним.

enumerate, zip, reversed — функции, помогающие при работе с итерируемым объектом (список, множество, словарь).

getattr, hasattr, setattr — функции для работы с атрибутами класса (получить значени, есть ли атрибут, задать значение).

map, filter — итераторы, которые выполняют какие-то действия (что-то меняют или убирают).

Документация

#урок
📌 Работаем с приложением из терминала

Каждый раз получать данные через input() неудобно. В таком случае лучше создать CLI API, но это трудно и долго... Если не использовать click.

Установка: pip install click

Библиотека мало того, что легко настраивается, так ещё и самостоятельно генерирует страницу помощи с полученными параметрами.

Если модуль вам подходит, можете начать с документации.

#урок
📌 Зачем нужна __name__?

Эта переменная нужна для проверки, модуль импортировали или же запустили как отдельный файл.

Если скрипт запущен отдельно, он получает имя '__main__', а если импортирован, то имя модуля (файла).

Таким образом можно избежать неожиданного поведения, ведь весь код при импорте выполняется абсолютно. Проверка __name__, к слову, считается хорошей практикой. Никогда не узнаешь, как твой скрипт будут использовать.

Все эти особенности описаны в документации Python.

#теория
📌 Работаем с таблицами в Python

Отображать данные в таблице довольно удобно, но вот реализовать такую функцию сложно. Хорошо, что это сделали за нас создатели prettytable.

Установка: pip install prettytable

Вы можете загружать значения из базы данных, csv-файлов или ручками добавлять информацию. После можете выводить в разных формата: CLI (терминал), JSON, HTML.

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

#урок
📌 Цепочка операторов

Python любит, когда код выглядит чисто и красиво, поэтому в нём реализована много фишек для упрощения программы.

С помощью цепочки операторов мы можем объединять несколько проверок в одну, но простую. Состоять она может из операторов сравнения (>, ==, <), is и in.

Также a op1 b op2 c не создаёт никаких связей между a, b, c. Поэтому ничего не мешает вам написать так: a < b > c, хоть это и не очень красиво

Документацния

#урок
Асинхронное программирование

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

Корутина — функция, которая может приостанавливать свое выполнение на некоторое время. Определяются они с помощью async.

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

#урок
📌 Быстро поднимаем сервер

Бывает нужно очень быстро перекинуть файлы с одного компьютера на другой. Такое сделать можно с помощью Python.

На одном компьютере запускаем HTTP сервер: python3 -m http.server, а на другом — качаем файл с помощью браузера.

Если не получилось, проверьте, подключены ли вы к одной сети? Возможно брандмауэр сервера блокирует запросы, а может просто забыли про порт.

#урок
📌 Встроенные команды

Это — функции, которые доступны из любого места в приложении. Некоторые из них вы видели: float(), str(), int(), map(), filter().

str(), int(), float(), list(), tuple() — переводят к какому-то типу: строка, целое число, дробовое число, список и кортеж.

map(), filter() — создают итераторы, которые преобразуют или фильтруют по определённым правилам (см. пример 2).

all(), any() — проверяют, если все значения True (all) или если хотя бы одно значение True (any).

#теория
📌 Упрощаем поиск багов

Время от времени стоит проверять, правильно ли работает функция и те ли данные она получила. В этом случае поможет assert.

Оператор принимает булевскую переменную, которая, если будет равняться False, выбросит исключение AssertionError.

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

#урок
📌 else в цикле

Этот блок существует и выполняется только если цикл завершил свою работу без вызова break.

Если на пути цикл встретит continue или появится ошибка, то код из else всё равно выполнится.

📕 Документация

#урок
📌 Красивые ошибки

Можно скрасить тяжёлые будни и настроить pretty_errors — модуль, который редактирует вывод исключений.

Установка: pip install pretty_errors

Вводим python -m pretty_errors, отвечаем на вопросы (или просто нажимаем Enter) и заканчиваем установку.

Теперь попробуйте сделать что-то запрещённое (поделить на 0) и вы получите ошибку как на фото выше.

#урок
📌 Параметры доступа

global
перед переменной говорит нам о том, что она будет глобальной, то есть доступной во всём модуле.

nonlocal используется во вложенных функциях и даёт доступ к переменным внешней функции. Требует, чтобы переменная была определена.

📕 Документация

#урок
📌 Получаем курс валют

Узнать цену биткоина в $ или получить стоимость доллара в рублях. Всё это можно сделать с помощью forex-python.

Установка: pip install forex-python

На самом деле это просто клиент для этого сайта. Список доступных валют можно посмотреть тут. Также модуль может конвертировать одну валюту в другую.

📕 Документация
🐙 Github

#урок
📌 Асинхронная замена requests

С помощью aiohttp мы можем не только составлять запросы, а также создавать HTTP-серверы.

Установка: pip install aiohttp
Для быстрой работы DNS: pip install aiodns.

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

📕 Документация

#урок
🧩 Топ-16 Python-приложений в реальном мире.

• За последние несколько лет технологии вокруг нас поменялись почти во всех аспектах. Мы живем в мире, где во главе угла стоит программное обеспечение, а за почти любой службой стоит какая-нибудь строчка кода. Индустрия путешествий, банкинг, образование, исследования, военная сфера — лишь немногие из тех, кто полагается на ПО.

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

🧷 https://pythonru.com/baza-znanij/primery-programm-na-python

#Статья
📌 Алгоритм бинарного поиска

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

Он намного быстрее чем простой проход по списку (для тех, кто шарит: O(log n) vs O(n)) и, к тому же, встроен в Python (модуль bisect).

📕 Документация

#урок
📌 __init__ vs __new__

__new__(cls)
создаёт экземпляр класса. Это метод, который вызывается когда пишем AnyClass().

__init__(self) инициализирует класс, то есть задаёт все переданные значения.

Вызывается после __new__ только если метод вернул такой же тип, что и класс, в котором он определён

#урок
📌 Что такое __all__ ?

Вот вы написали from module import * и к вам в код попало куча объектов, которые используются только внутри модуля.

Избавиться от мусора можно, если записать в __all__ список имён всех объектов (классы, функции, переменные), которые надо импортировать.

📕 Документация

#урок
📌 Делаем вычисления более точными

Поскольку люди не могут перевести некоторые числа с плавающей запятой в двоичный вид, мы получаем это: 0.1 + 0.2 = 0.30000000000000004.

Исправить проблему можно с помощью decimal. Модуль умеет быстро и правильно округлять арифметические операции с плавающей запятой.

И это всё тот же float. То есть вы можете складывать значения, вычитать, умножать, делить, сравнивать, и так далее.

#урок
📌 func.__defaults__

Значения по умолчанию генерируются только один раз и сохраняются в переменной func.__defaults__, что и приводит к странному поведению.

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

#урок