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

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

Преобрести рекламное размещение: https://telega.in/c/Python_libr
加入频道
«Интерпретатор разумный»

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

Важно, чтобы это был неизменяемый тип данных (str, tuple, int). А ещё результат может отличаться в интерактивном интерпретаторе и при запуске как файл.

#урок
Булевые операции

or и and могут возвращать не только True или False, они работает несколько по другому:

x or y — если x правда (True), возвращает x, иначе y.

x and y — если x правда (True), возвращает y, иначе x.

#урок
Оператор with

Когда мы работаем с файлами их надо закрывать, значит надо оборачивать в try/except/finally, значит будет куча нечитаемого кода.

Решение есть — with. Оператор самостоятельно выполняет обязательные функции по завершению работы с классом.

Использует __enter__ в начале и __exit__ на выходе (если закончились действия или возникла ошибка).

📌 PEP 343

#урок
Нижние подчёркивания между цифрами

Для Python они не имеют никакого значения и используются чтобы было удобнее воспринимать большие числа. (1000000000, например).

Согласитесь, намного легче прочитать 1_000_000 чем 100000 (самые внимательные заметили, что тут не хватает одного нолика).

#урок
📌 all и any

all(iterable) — возвращает True, если все элементы в iterable являются True или если iterable пуст.

any(iterable) — возвращает True, если хотя бы один элемент в iterable является True.

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

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

#урок
Пройдёмся по основам

В Python всё — объекты, а переменные — просто ссылки на них. Поэтому типы разделяют на две части: изменяемые и неизменяемые.

К изменяемым можно отнести list, set, dict и классы, которые мы создаём, а к неизменяем — bool, int, float, complex, tuple, str, frozenset.

#урок
Статические переменные/методы

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

Все переменные, что находится внутри класса, но не попадают в ни один метод являются статическими. Методы же помечаются @stasticmethod.

#урок
📖 Создание настольных Python приложений с графическим интерфейсом пользователя.

• Python является наиболее популярным языком программирования, используемым для объектно-ориентированного программирования. И конечно, Python — это интерактивный язык программирования, который предоставляет широкий спектр возможностей для создания GUI (Graphical User Interface) и разработки настольных приложений. В этой книге вы познакомитесь с различными фреймворками Python для создания настольных приложений с графическим интерфейсом пользователя, такими как PyQt, PySide, Tkinter, Kivy, WxPython и Dear PyGUI.

#RU #Игры
📌 from functools import singledispatch

В Java, C++, C# есть такое понятие как перегрузка метода, это когда код отрабатывает по разному в зависимости от типа аргумента.

В Python нет такой возможности, но мы можем создать подобное поведение с помощью декоратора @singledispatch.

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

#урок
📌 Loguru

Выбросьте logging, удалите его из стандартных библиотек и установите loguru. Вы не пожалеете.

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

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

Ещё интересной фишкой является отправка сообщений на почту. Установив notifiers, вы сможете пересылать ошибки к себе на email.

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

#урок
📌 Roadmap по Python

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

#roadmap
Фокус с type

Знали ли вы, что с помощью type можно создавать типы? Просто передайте ему на пару аргументов больше и вы получите новый класс!

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

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

#урок
📌 Устали удалять __pycache__?

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

В ней можно найти .pyc и .pyo файлы. Это байткод и оптимизированный байткод. Они создаются заново, если код программы изменился.

📕 Подробнее

#урок
📌 Дескрипторы

Это невероятно сложная, но класса штука. Проще говоря, это атрибуты-классы с методами __get__(obj, objtype), __set__(obj, value) и/или __delete__(obj).

Когда мы получаем значение атрибута, вызывается __get__(), поведением которого управляем мы. Так мы можем создать, например, константу.

📕 HowTo

#урок
📌 Немного про регулярные выражения

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

Но ситуацию можно исправить, если добавить комментарии и правильно воспользоваться f-строками.

📕 Статья по этой теме

#урок
📌 Модуль copy

В python есть модуль, который называется copy. У него только две функции: copy() и deepcopy().

copy(x) — поверхностно копирует объект. Просто создаёт новый, сохраняя все ссылки внутри него.

deepcopy(x) — глубокое клонирование. Создаёт новый и рекурсивно копирует элементы внутри.

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

#урок
Отсутствующие элементы в словаре

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

Примерно по такому принципу, как на фото выше, работает defaultdict из модуля collections.

#урок
📌 Методы строк, о которых нужно знать

ljust, rjust, center — используются для позиционирования текста. На самом деле, они просто создают строку, не меньше width и заполняют её пробелами (или другим, переданным символом).

strip — удаляет пробелы, табуляцию, перенос на новую строку и тому подобные символы из конца и начала строки. Если передать другие символы, то функция избавится от них. rstrip и lstrip делают то же самое, только в конце и в начале строки.

splitlines — возвращает список строк в тексте. Его лучше использовать вместо split('\n').

#урок
📌 isdecimal() vs isdigit() vs isnumeric()

Эти три метода str используются для определения, является ли строка числом, но у них есть небольшие отличия.

'123'.isdecimal() — проверяет, является ли строка только набором цифр (1-9). В то время как:

· '123⁴'.isdigit() вернёт True, даже если в строке есть маленькие цифры (² или \u00B2).

· '½'.isnumeric() вернёт True, даже если это дробь (½ или \u00BD).

#урок