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
Что вернет это выражение?

100 > 0 == True
Anonymous Quiz
69%
True
12%
False
19%
SyntaxError
Структурная типизация

Структурная типизация (structural type system) определяет совместимость типов на основе структуры этих типов, а не на явных декларациях. Подобный механизм может рассматриваться как некоторый аналог утиной типизации, но для статических проверок, в некотором смысле compile time duck typing.

Структурная типизация также довольно широко распространена. Например, интерфейсы в Go – это набор методов, которые определяют некоторую функциональность. Типы, реализующие интерфейсы в Go не обязаны декларировать каким-либо образом, что они реализуют данный интерфейс, достаточно просто реализовать соответствующие методы интерфейса.

На примере класс Employee является подтипом Person, хотя в коде нет никаких явных деклараций наследования. Важно лишь то, что Employee имеет необходимые свойства name и age. Класс Figure, напротив, не имеет указанных свойств и, следовательно, не может быть использован там, где ожидается Person.
Что выведет код сверху?
Anonymous Quiz
48%
[1, 2, 3, 'abc']
7%
[1, 2, 3]
8%
Error
36%
[1, 2, 3, 'a', 'b', 'c']
Метод intersection()

Метод intersection() возвращает новый набор с элементами, общими для всех наборов. Пересечение двух или более наборов ‒ это набор элементов, общих для всех наборов.
Какая коллекция упорядочена, изменчива и допускает дублирование членов?
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. Это был элементарный пример, который позволил нам рассмотреть нечто более сложное.