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
Какая коллекция упорядочена, изменчива и допускает дублирование членов?
Anonymous Quiz
16%
dictionary
12%
set
59%
list
13%
tuple
PrettyTable в python

PrettyTable — это библиотека Python, разработанная для простого и быстрого отображения табличных данных в визуально удобных таблицах ASCII.

На примере добавлены данные по одному столбцу за раз. Для этого используется метод add_column, который принимает два аргумента, название столбца и список или кортеж, содержащий значения.
Что выведет код сверху?
Anonymous Quiz
26%
1, 2, 3
36%
3
7%
(3)
31%
Error
defaultdict: безошибочный словарь

Обычный словарь dict в Python содержит пары вида «ключ:значение». Значение из словаря можно запросить по ключу. В случае если запрашиваемого ключа в словаре нет, Python выдаст ошибку.

Поведение логичное, но не слишком удобное для работы. Словарь defaultdict из библиотеки collections поступает иначе: если запросить у такого продвинутого словаря ключ, которого в нём нет, он не обидится и не выкинет ошибку, а вместо этого:

— создаст этот ключ;
—создаст к нему значение, которое будет иметь тип, оговорённый по умолчанию («по дефолту» — отсюда, кстати, и название), — например, целое число или строку;
—вернёт вам это значение.
Что выведет код сверху?
Anonymous Quiz
13%
-6
5%
5
32%
-10
14%
-5
32%
Error
5%
10
Функция glob()

C помощью функции glob() мы можем получить список файлов, соответствующих определенному шаблону (мы должны определить этот конкретный шаблон внутри функции).

Список, возвращаемый функцией glob(), будет строкой, которая должна содержать спецификацию пути в соответствии с путем, который мы определили внутри функции. Строка или итератор для функции glob() фактически возвращает то же значение, что и функция iglob(), без фактического сохранения в ней этих значений (имен файлов).
Что выведет код?

print(50 and 100)
Anonymous Quiz
33%
50 100
7%
50
15%
100
45%
ни один из перечисленных
Функция escape()

Функция escape() становится очень действенным, поскольку позволяет нам избежать заданной последовательности символов, которую мы определили в функции.
Функция escape() очень удобна для поиска файлов, в именах которых есть определенные символы (как мы определим в функции). Она будет соответствовать последовательности, сопоставляя произвольную буквальную строку в именах файлов с этим специальным символом в них.

Escape() следует использовать с функцией glob() или iglob(), чтобы в результате мы могли распечатать список имен файлов в выходных данных.
Функция fork()

Функция fork() модуля os создает клон текущего процесса как дочерний процесс. Возвращает 0 в дочернем процессе и идентификатор дочернего процесса в родительском элементе. Если возникает ошибка, то возникает исключение OSError.

После разветвления, два процесса выполняют один и тот же код. Чтобы программа узнала, в каком она находится, она должна проверить возвращаемое значение os.fork(). Если значение равно 0, текущий процесс является дочерним. Если это не 0, программа выполняется в родительском процессе, а возвращаемое значение является идентификатором процесса дочернего процесса.
Что выведет код сверху?
Anonymous Quiz
7%
Python
7%
-1
43%
Error
30%
nothyP
13%
"
Модуль getpass()

Как и NumPy и Matplotlib, getpass также является модулем python. Модуль getpass запрашивает у пользователя пароль без эха. Это означает, что вы не показываете, что набирает пользователь.

Выше мы можем увидеть фундаментальный пример getpass. Основная задача нашего кода состояла в том, чтобы запрашивать входные данные у пользователя. Для этого мы сначала импортировали модуль getpass. После чего мы использовали команду Try and except. Они используются для обработки исключений. После попытки код оператора выполняется как обычная программа. Команда, следующая за оператором except, отвечает на исключение оператора try. Это был элементарный пример, который позволил нам рассмотреть нечто более сложное.
Что выведет код сверху?
Anonymous Quiz
38%
Error
13%
9
41%
[9, 1, 3]
8%
[3, 6]
Функция vars()

Функция vars() вернет атрибут dict - словарь пространства имен для модуля, класса, экземпляра или любого другого объекта с атрибутом dict.

Такие объекты, как модули и экземпляры классов, имеют обновляемый dict атрибут, однако другие объекты могут иметь ограничения для записи своих атрибутов dict, например классы, которые используют types.MappingProxyType для предотвращения прямого обновления словаря.

Без аргумента vars() действует как встроенная функция locals(). Обратите внимание, что словарь переменных локальной области видимости полезен только для чтения, поскольку обновление словаря локальной области видимости игнорируются интерпретатором.
Модуль diffflib

Модуль diffflib, как следует из названия, может использоваться для поиска различий или «различий» между содержимым файлов или других хешируемых объектов Python. Его также можно использовать для определения соотношения, показывающего степень сходства между двумя объектами.

Вы можете сравнить два хешируемых типа или последовательности, используя класс «Differ», доступный в модуле diffflib.

На примере выше, оператор импортирует класс Differ из модуля difflib. Затем две переменные строкового типа определяются с некоторыми значениями. Затем создается новый экземпляр класса Differ как «d». Далее с помощью этого экземпляра вызывается метод «compare», чтобы найти разницу между строками «line1» и «line2». Эти строки предоставляются в качестве аргументов для метода сравнения.
Что выведет код?
Anonymous Quiz
63%
{1, 2, 3, 4}
6%
True
20%
None
12%
Error