Python tricks | Хитрости Питона
الذهاب إلى القناة على Telegram
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты. Сотрудничество: @SIeep_Token Мы на платформе: https://telegram.me/python_tricks Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
إظهار المزيد6 053
المشتركون
لا توجد بيانات24 ساعات
-117 أيام
-5930 أيام
أرشيف المشاركات
Убийца Hamster Kombat ☠️
Уже 5 миллионов человек по всему миру фармят BLUM! По качеству, подходу к продвижению своего продукта и потенциальной награде за активность, пожалуй это один из лучших проектов на рынке от команды Binance.
Залетайте:
http://t.me/BlumCryptoBot
Унарные операторы (ч.4)
Метод invert(self) в Python вызывается при использовании побитового отрицания ~ для объекта. Он позволяет определить поведение объекта при побитовом инвертировании его значений.
В приведенном примере метод invert просто использует побитовое отрицание ~ для атрибута self.value, что позволяет инвертировать биты числа.
Этот лайфхак полезен при работе с побитовыми операциями, такими как побитовое отрицание, побитовое ИЛИ, И и т. д. Переопределение метода invert позволяет объекту поддерживать более сложные операции с битами, что может быть полезно при работе с битовыми представлениями данных или при написании кода, связанного с низкоуровневыми аспектами.
🔗 Python tricks
Унарные операторы (ч.3)
Метод abs(self) вызывается при использовании встроенной функции abs() для объекта. Он позволяет определить поведение объекта при вычислении его абсолютного значения.
В примере выше метод abs просто вызывает встроенную функцию abs() для атрибута self.value, что позволяет получить абсолютное значение числа.
Этот лайфхак полезен при создании объектов, которые представляют числовые значения, таких как вектора, комплексные числа или другие структуры данных, где определение абсолютного значения имеет смысл. Переопределение метода abs позволяет объекту поддерживать стандартные математические операции в Python, такие как вычисление модуля числа.
🔗 Python tricks
Унарные операторы (ч.2)
Метод pos(self) в Python вызывается при использовании унарного оператора плюс (+) для объекта. Он позволяет определить поведение объекта при применении унарного плюса к нему.
В данном примере метод pos просто возвращает сам объект без изменений. Это позволяет объекту сохранять своё значение при использовании унарного плюса. Несмотря на то, что в этом примере метод pos не вносит никаких изменений, он может быть полезен для реализации специфического поведения в других контекстах.
🔗 Python tricks
Унарные операторы (ч.1)
В данном примере класс Number реализует метод neg(self), который переопределяет оператор отрицания - для объектов этого класса. Когда мы используем оператор отрицания для объекта num, Python вызывает метод neg для этого объекта, который возвращает новый объект Number с отрицательным значением атрибута value.
Этот лайфхак полезен для создания объектов, которые могут поддерживать математические операции с помощью перегрузки операторов в Python. Переопределение метода neg позволяет определить поведение объекта при использовании оператора отрицания, что может быть полезно при работе с числами или другими данными, где операция отрицания имеет смысл.
🔗 Python tricks
Глубокое копирование (deep copy)
Глубокое копирование нужно для создания полной копии объекта, включая все вложенные объекты. Это важно для изменяемых объектов, таких как списки, чтобы изменения в копии не затрагивали оригинал.
Когда мы вызываем глубокое копирование, происходит следующее:
- Создается новый контейнерный объект (список, словарь и т. д.);
- Для каждого элемента исходного объекта рекурсивно вызывается глубокое копирование:
- Если элемент является изменяемым объектом (списком, словарем), то создается его копия с рекурсивным копированием вложенных элементов;
- Если элемент неизменяемый (число, строка) - он просто копируется как есть;
- Копии вложенных объектов вставляются в копию исходного объекта.
🔗 Python tricks
Создание последовательностей (ч.8)
В данном примере класс CustomList определяет метод contains(self, item), который проверяет наличие элемента item в списке self.items. При использовании оператора in для объекта CustomList, вызывается метод contains, который возвращает True, если элемент найден в списке, и False, если элемент отсутствует.
Этот лайфхак полезен для создания пользовательских коллекций или структур данных, которые могут поддерживать проверку наличия элементов посредством оператора in. Переопределение метода contains позволяет определить, как будет работать проверка наличия элементов в вашем объекте, что может быть полезно для удобства использования вашей структуры данных в Python.
🔗 Python tricks
Я отсужу у тебя квартиру, потому что ты шумишь после 20:00
А еще выпишу штраф 50.000 рублей и отправлю на общественные работы, потому что неправильно выносишь мусор.
Я – юрист с 20-летним стажем, знаю всё о законах и лазейках в них. Анонимно веду канал Деньги, где объясняю:
– Как сделать ремонт за счет государства
– Как случайно «потерять» кредитную карту и получить 34.000р компенсации
– Как круглый год отдыхать в гос. санаториях и ни копейки за это не отдать
Подписывайтесь, у юридически подкованных людей с деньгами проблем нет: https://t.me/+QcQ3sWCMVf4zN2Ri
MongoDB: Find
В MongoDB ты можешь использовать методы find() и find one() для поиска данных в коллекции. Точно так же, как оператор SELECT используется для поиска данных в таблице базы данных MySQL. Метод find one() возвращает первое вхождение в выборке. Метод find() возвращает все вхождения в выборке.
🔗 Python tricks
Mypy
Mypy — это статический анализатор типов для Python. Он позволяет добавить статическую типизацию в Python и выявлять ошибки, связанные с типами, на этапе компиляции.
Для использования Mypy нужно аннотировать переменные специальным синтаксисом, в примере мы указали, что функция sum_list принимает список целых чисел и возвращает целое число.
После запуска, если типы не совпадают, Mypy выдаст ошибку, как показано в примере.
🔗 Python tricks
Листаешь ленту приложений для знакомств и ни одной норм девчонки?
Такими темпами можно отчаяться и стать зависимым от 18+ видео.
Творчество Чувств — канал, благодаря которому тысячи парней находили ту самую девушку без бесконечных свайпов.
Нужно лишь грамотно произвести первое впечатление и задать тон общения, а дальше все пойдет само.
Подпишись и стань магнитом для достойных девушек — t.me/+w2H4dWWK-idkODMy
Дан целочисленный массив nums, вернуть [nums[i], nums[j], nums[k]] такие, что nums[i] + nums[j] + nums[k] == 0.
В нашем решении сначала список nums сортируется. Затем перебираются все возможные комбинации индексов i, j и k. Их сумма проверяется на равенство target и добавляется в результирующий сет, если равна.
🔗 Python tricks
+2
Подписывайтесь на наш канал!
🖥 Рассказываем про импортозамещение, IT-новости собственное производство. ⚙️
Ищем сотрудников и партнёров. 👥
Обсуждаем ПО 🖥и ОС. 🖥️
https://tglink.io/baa6ece54535
List и Tuple — зачем нужны и какие отличия
List и Tuple — это два основных типа данных для хранения последовательностей.
List (список) — изменяемый тип данных, можно добавлять, удалять и изменять элементы.
Tuple (кортеж) — неизменяемый тип данных, элементы нельзя изменить после создания.
Основные отличия:
- Списки изменяемые, кортежи - нет;
- Списки удобнее для добавления/удаления элементов;
- Кортежи более эффективны по памяти и быстрее для доступа к элементам.
Для хранения постоянных данных лучше использовать кортежи, а для изменяемых данных — списки.
🔗 Python tricks
PySnooper
PySnooper — это библиотека для отладки, которая позволяет логгировать каждую строку выполняемого кода вместе со значениями переменных. Она полезна, когда нужно понять, как работает код и где происходят изменения переменных.
Для использования необходимо декорировать функцию, которую нужно отладить с помощью
@pysnooper.snoop(). Вид лога можно настроить с помощью параметров: variables — какие переменные отображать, depth — максимальная вложенность структур данных, prefix — префикс для каждой строки лога.
Результат использования pysnooper предоставлен на изображении.
🔗 Python tricksBoltons.iterutils
Boltons — это набор из более чем 230 утилит на чистом Python, распространяемых по лицензии BSD, которые дополняют стандартную библиотеку. А iterutils — модуль, который предоставляет множество полезных функций для работы с итераторами.
В примере мы используем следующие функции:
- chunked: разделяет список на чанки заданного размера.
- windowed: возвращает скользящее окно заданного размера из списка.
- pairwise: возвращает пары соседних элементов из списка.
- split: разделяет список на две части по заданному условию.
- split_at: разделяет список на две части по заданному индексу.
🔗 Python tricks
Дана входная строка s, необходимо изменить порядок слов в строке на противоположный.
Слово определяется как последовательность символов, не содержащих пробелов. Слова в s будут разделены как минимум одним пробелом.
Вернуть строку, состоящую из слов в обратном порядке, объединенных одним пробелом.
*s может содержать начальные или конечные пробелы, а также несколько пробелов между двумя словами. Возвращаемая строка должна содержать только один пробел, разделяющий слова.
Чтобы решить данную задачу нам необходимо:
- Удалить начальные и конечные пробелы, а также уменьшить количество пробелов между словами до одного.
- Разбить строку на отдельные слова и сохранить в списке.
- Поменять порядок слов в списке на обратный с помощью метода reverse().
- Объединить слова в строку, разделенную одним пробелом, и вернуть результат.
🔗 Python tricks
Баба Зина купила пакет яблок за 62 рубля
А потом засушила и продала их по 250 рублей, потому что сухофрукты стоят в несколько раз дороже.
Звучит слишком просто? А ведь каждый человек может реализовать подобную бизнес-идею и получать 200-300 тысяч ежемесячно.
Просто не все знают про канал Бизнес-идеи – тут полно способов послать нах%р своего начальника и начать работать чисто на себя.
Поверьте, денег много, если правильно искать: @biz_idea
Repost from It-donor channel
♾ Продолжаем бесконечный цикл добра
С 3 по 7 июня стартует восьмая неделя IT-донора. С каждым запуском акция объединяет всё больше неравнодушных людей по всей России. За 3,5 года:
❤️в проекте зарегистрировалось 4900 человек;
❤️собрали 720 литров крови и спасли более 3000 жизней;
❤️объединили 200 городов.
Эти цифры не предел. Ведь сейчас открывается регистрация на летнюю неделю IT-донора 🔥
Стать героем просто — присоединяйтесь к акции и делитесь постом. И будьте уверены, что помогли спасти жизнь. Зарегистрируйтесь на акцию через наш бот и с 3 по 7 июня приходите на любую станцию переливания, чтобы сдать кровь или компоненты.
Подробнее о цикле добра читайте на сайте
Перегрузка операторов сравнения
Перегрузка операторов сравнения позволяет определить поведение операторов сравнения (таких как ==, !=, <, >, <= и >=) для экземпляров пользовательских классов. Это может быть полезно, когда вы хотите сравнивать объекты на основе определенных атрибутов или свойств.
В этом примере мы определяем класс Person с атрибутами name и age. Затем мы перегружаем операторы сравнения, чтобы они сравнивали объекты Person на основе их возраста. Например, оператор == возвращает True, если возраст двух объектов Person равен, иначе возвращает False.
🔗 Python tricks
