Python tricks | Хитрости Питона
5.67K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
​​Метод popitem() 
 
Метод словаря popitem() удаляет последнюю вставленную пару «ключ-значение» указанного ключа и возвращает эту пару.
Какая из перечисленных инструкций выполнится быстрее всего, если n = 10**6?
Anonymous Quiz
18%
a = list(i for i in range(n))
29%
a = [i for i in range(n)]
38%
a = (i for i in range(n))
15%
a = {i for i in range(n)}
​​geopy 
 
Программистам может быть сложно ориентироваться в географии. Однако модуль geopy всё упрощает: 
 
$ pip install geopy 
 
Он работает путём абстрагирования API разных сервисов геокодирования. Этот модуль даёт возможность узнать полный адрес места, его долготу и широту и даже высоту. 
 
Также в нём есть полезный класс Distance. Он высчитывает расстояние между двумя местами в удобной единице измерения.
​​Кэширование функций 
 
Кэширование может сэкономить время, когда связанная с вводом или выводом функция периодически вызывается с одинаковыми аргументами. Раньше приходилось создавать свою реализацию, но в Python 3.2+ появился декоратор lru_cache, который позволяет нам быстро кэшировать и вскрывать возвращаемые значения функции. 
 
Давайте реализуем калькулятор чисел Фибоначчи с использованием кэша. Советую попробовать запустить любую рекурсивную функцию с кэшированием и без него, прирост в скорости замечается сразу.
​​Библиотека sh 
 
Любой программист должен знать bash - язык для взаимодействия с линуксом. Основы знают все, ведь по-другому не запустить программу на сервере или не установить нужную библиотеку. Данный модуль позволяет использовать bash прямо в Python коде. 
 
Библиотеку требуется установить: 
 
pip install sh 
 
Если вдруг вы забыли как написать что-то на Python, то всегда можете использовать bash.
​​Not a Number 
 
В модуле math есть особый объект, который называется NaN (Not a Number). 
 
Такие объекты не уникальны, и даже не равны самим себе, так что вы можете иметь несколько подобных объектов, взятых из нескольких разных источников.
​​Аргументы командой строки 
 
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys
 
Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
извините, забыл сначала картинку выложить :)
​​Функция reduce() 
 
Функция reduce() модуля functools кумулятивно применяет функцию function к элементам итерируемой iterable последовательности, сводя её к единственному значению. 
 
Параметры: 
  function - пользовательская функция, принимающая 2 аргумента, 
  iterable - итерируемая последовательность, 
  initializer - начальное значение.
​​Сортировка списка

Метод list.sort() сортирует элементы списка на месте восходящей способности. Чтобы настроить поведение сортировки по умолчанию, используйте дополнительный ключ Аргумент, передавая функцию, которая возвращает сопоставимое значение для каждого элемента в списке. С дополнительным логическим Обратный Аргумент, вы можете переключиться с восходящего ( Reverse = false ) до поручения убывания ( Reverse = True ).

В первой строке примера вы создаете список lst отказ затем вы разбираетесь в списке один раз, используя поведение сортировки по умолчанию и один раз, используя индивидуальное поведение сортировки только с первой буквой номера. Затем вы поменяете заказ элементов в отсортированном списке, используя Reverse = True аргумент
С помощью Python нужно записать данные в файл, но только в том случае, если файла ещё нет. Какой режим указать в инструкции open()?
Anonymous Quiz
15%
'x'
37%
Никакой. Нужна предварительная проверка os.path.exists()
41%
'w'
7%
'r'
Различие "==" и "is" в Python

- оператор "==" проверяет равенство значений двух объектов

- оператор "is" проверяет идентичность самих объектов. Его используют, чтобы
удостовериться, что переменные указывают на один и тот же объект в памяти.

Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны такие казусы(короткая строка).

Но стоит сделать строку длиннее и всё встаёт на свои места(длинная строка)
Деструктор

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

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

Однако при уничтожении объекта необходимо освобождать не только память. Мы должны освободить или закрыть другие ресурсы, которые использовались объектом, такие как открытые файлы, соединения с базой данных, очистка буфера или кеша. Для выполнения всех этих задач очистки мы используем деструктор в Python.

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

Чтобы вставить переменные в строку в Python, мы можем использовать форматированные строковые литералы.

Поместите символ f перед началом строкового литерала с одинарными или двойными кавычками, как показано на примере.
​​Глобальные переменные 
 
Глобальные переменные - это переменные, объявленные вне функции. Глобальные переменные имеют глобальную область видимости. Это означает, что к ним можно получить доступ во всей программе, в том числе в функциях.

В данном примере, переменная c была объявлена в функции mul() с помощью ключевого слова global. Ее значение умножается на 10 и становится равным 100. В процессе работы программы можно увидеть, что изменение значения внутри функции отражается на глобальном значении переменной.
​​Функция sorted()  
 
Функция sorted() возвращает новый отсортированный список итерируемого объекта (списка, словаря, кортежа). По умолчанию она сортирует его по возрастанию. 
 
Так же эта функция имеет необязательный параметр(reverse). По умолчанию сортировка выполняется по возрастанию. Если указать reverse=True, то можно отсортировать по убыванию.
А может комменты включить?
Anonymous Poll
78%
Да, я за
22%
Я против
Использование понимания списка

Понимание списка – это немного другой способ удаления элемента из списка. Он удаляет те элементы, которые удовлетворяют заданному условию.

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