Just Python
10.2K subscribers
4.39K photos
11 videos
4.38K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Как скопировать объект в Python

В общем случае, с помощью модуля copy.
Некоторые объекты можно скопировать более просто. Словари имеют метод copy.
Последовательности могут быть скопированы путём срезов.

#theory // Just Python
Как создавать функции более высокого порядка

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

#theory // Just Python
Почему изменение списка 'y' изменяет также список 'x'

Вы, возможно, будете удивлены тому, что добавление в y изменяет также и x.
Два факта приводят к такому результату:
• Переменные - это просто ссылки на объекты. y = x не создаёт копию списка - это просто создаёт переменную y, которая ссылается на тот же объект, что и x.
• Списки изменяемы.

#theory // Just Python
Как можно узнать имя объекта

Вообще говоря, никак, поскольку объекты в действительности не имеют имён. Важно: присваивание всегда связывает имя с объектом. Это верно и для инструкций def и class.
Возможно, класс имеет имя: однако, хотя он связан с двумя именами и запрашивается через имя B, созданный экземпляр всё ещё считается экземпляром класса A. Однако, невозможно сказать, имя экземпляра a или b, поскольку оба они связаны с одним и тем же значением.

#theory // Just Python
Эффективное использование метода __imod__(self, other)

Метод imod(self, other) в Python позволяет определить поведение оператора взятия остатка с присваиванием (%=) для пользовательских классов. Это полезно для работы с числовыми данными и структурами, где операции взятия остатка и обновления значений являются обычными задачами.

Метод imod — это специальный метод, который позволяет реализовать операцию взятия остатка с присваиванием. Когда оператор %= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом операции.

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

#theory // Just Python
Как ускорить код при помощи векторизации?

Лучшее решение — векторизация вычислений. Простыми словами: использование функций, которые поддерживают операцию над векторами.

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

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

#theory // Just Python
Создание таблиц в терминале Python

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

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

Модуль не имеет особых сложностей в структуризации, наименования столбцов задается по команде fieldsname, а строки - методом addrow.

Модуль prettytable также способен влиять на различные параметры таблиц, производить сортировку данных и работать с html, при том не ограничиваться во взаимодействии с таблицами csv и sql.

#theory // Just Python
Эффективное использование метода ifloordiv(self, other)

Метод ifloordiv(self, other) в Python позволяет определить поведение оператора целочисленного деления с присваиванием (//=) для пользовательских классов. Это особенно полезно для работы с числовыми данными и структурами, где целочисленное деление и обновление значений являются обычными задачами.

Метод ifloordiv является специальным методом, который позволяет реализовать целочисленное деление с присваиванием. Когда оператор //= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом целочисленного деления.

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

#theory // Just Python
Пакеты в Python

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

На примере выше, тип импорта from package import* подключает необходимые модули и объекты, исходя из модуля `init.py`, или следует переменной all из того же модуля.

К слову, модуль `init.py` ранее отвечал за команду создания пакетов, но с модернизацией Python, он утратил данную необходимость, оставаясь при этом важной командой, включающей необходимый модуль.

#theory // Just Python
Функции sleep() и time()

Чтобы понять смысл функции sleep(), разберём простой пример. Три строки выводятся в определённый промежуток времени – задержку обеспечивает sleep.

Сперва выводится первая строка, затем идёт функция sleep(), которая задерживает вывод на 2 секунды. Точно так же для следующего print мы используем sleep на 5 секунд.

Рассмотрим пример использования sleep() для создания промежутка времени. Мы используем функцию time(), чтобы узнать текущее время, и localtime(), чтобы получить текущие дату и время в конкретной местности. Кроме того, есть функция strftime() («string from time»), которая возвращает время в виде строки в указанном формате.

В результате интервал между двумя моментами времени составил две секунды.

#theory // Just Python
Смешивание математики с дробями

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

#theory // Just Python
Округление дробей

Можно округлить дроби на количество цифр, которое мы хотим в знаменателе.

#theory // Just Python
Получение частей дробей

Можно получить только числитель или знаменатель дроби.

#theory // Just Python
Эффективное использование метода imatmul(self, other)

Ме
тод imatmul(self, other) в Python позволяет определить поведение оператора матричного умножения с присваиванием (@=) для пользовательских классов. Это полезно для работы с матрицами и другими структурами данных, поддерживающими матричное умножение, делая код более выразительным и эффективным.

Метод imatmul — это специальный метод, который позволяет реализовать матричное умножение с присваиванием. Когда оператор @= применяется к объекту, Python вызывает этот метод, позволяя изменить объект на месте в соответствии с результатом матричного умножения.

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

#theory // Just Python
Реализация операции вычитания на месте для пользовательского класса

Метод isub в Python используется для реализации операции вычитания на месте (оператора -=). Этот метод позволяет изменять объект "на месте", что может быть полезно для оптимизации производительности и управления памятью.

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

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

#theory // Just Python
Расширение возможности операции побитового исключающего "или" для пользовательских объектов

Метод rxor в Python используется для реализации операции побитового исключающего "или" (оператора ^), когда операнд слева не поддерживает соответствующий метод xor. Этот метод полезен для работы с пользовательскими объектами, когда требуется поддерживать операцию побитового исключающего "или" с различными типами данных.

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

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

#theory // Just Python
Сравнение быстродействия def и lambda-функций Python. Производные функции

Иными словами — функция второго уровня вложенности служит для многократного вызова и создания во время каждого функции третьего уровня вложенности.

#theory // Just Python
Сравнение быстродействия def и lambda-функций Python. Производные функции часть 2

А производная для функции построения графика — это же самая функция с определенными аргументами.

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

Вернёмся к первому. В случае проверки скорости создания функции, функция_для_замера() будет иметь одну цель — создать внутри себя def или lambda функцию. Её мы будем вызывать множество раз, и каждый раз она будет создавать одну и ту же функцию заново.

#theory // Just Python
Думаете, Биткоин золотая жила?

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

Это блог трейдера, который за 5 лет начальные $10 тыс. превратил в $2 млн. Он находит монеты, которые взлетают в 3-5 раз в течение недели-двух и рассказывает о таких сделках в своем канале.

Все сделки, анализы и наработки публикует в своём блоге. Загляните сами. Ссылка удалится через сутки, имейте в виду 👇

Перейти в канал и посмотеть список самых перспективных монет на июнь →
Сравнение быстродействия def и lambda-функций Python. Производные функции часть 3

Слабонервным людям, ненавидящим многоуровневые вложения, не читать.

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

#theory // Just Python