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
Эффективное использование метода __ixor__(self, other)

Метод ixor(self, other) в Python позволяет определить поведение оператора побитового исключающего ИЛИ с присваиванием (^=) для пользовательских классов. Этот метод полезен для выполнения битовых операций над данными, которые хранятся в пользовательских объектах.

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

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

#theory // Just Python
Почему анонимные функции (lambda), определенные в цикле с разными значениями, возвращают один и тот же результат

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

В конце цикла, x=4, поэтому все функции возвращают 4**2, то есть 16. Это можно также проверить, изменив значение x и посмотрев на результат.

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

Метод iand(self, other) в Python позволяет определить поведение оператора побитовой операции "и" с присваиванием (&=) для пользовательских классов. Этот метод полезен для выполнения битовых операций над данными, которые хранятся в пользовательских объектах.

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

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

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

Канонический способ организовать подобный доступ - это создать отдельный модуль (часто называемый config или cfg). Просто добавьте import config в каждый модуль приложения. При этом модуль становится доступен через глобальное имя. Поскольку существует только один экземпляр модуля, любые изменения, произведённые в модуле отражаются везде.

#theory // Just Python
Как правильнее использовать импортирование

В общих случаях не используйте from modulename import *. Это засоряет пространство имён того, кто импортирует. Некоторые люди избегают этой идиомы даже для тех немногих модулей, которые были спроектированны, чтобы так импортироваться. Это такие модули как Tkinter и threading.

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

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

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

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

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

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

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

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

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

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

Метод ipow(self, other[, modulo]) в Python позволяет определить поведение оператора возведения в степень с присваиванием (=) для пользовательских классов. Этот метод может включать необязательный параметр modulo, который позволяет выполнять возведение в степень по модулю. Этот лайфхак полезен для работы с числовыми данными, особенно в математических и криптографических приложениях.

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

Использование метода ipow позволяет легко реализовать операцию возведения в степень с присваиванием для пользовательских классов.

#theory // Just Python
Почему значения по умолчанию разделяются между объектами

Часто ожидается, что вызов функции создаёт новые объекты для значений по умолчанию. Но это не так. Значения по умолчанию создаются лишь однажды, когда функция определяется. Если этот объект изменяется, как словарь в нашем примере, последующие вызовы функции будут использовать изменённый объект.

По определению, неизменяемые объекты (числа, строки, кортежи и None), безопасны при изменении. Изменение изменяемых объектов, таких как словари, списки, и экземпляры пользовательских классов может привести к неожиданным последствиям.

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

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

#theory // Just Python
Как скопировать объект в 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