⚡️ Дизассемблируем код
В Python существует интересный модуль под названием dis, позволяющий залезть «под капот».
Этот модуль помогает анализировать CPython байткод, разбирая его. Это один из тех модулей, который позволяет поиграться с языком и изучить его подробнее.
Для экспериментов вам может пригодиться только метод dis, который принимает классы или функции.
Если вам стало интересно, то вы можете перейти на сайт документации.
#миниурок #dis
В Python существует интересный модуль под названием dis, позволяющий залезть «под капот».
Этот модуль помогает анализировать CPython байткод, разбирая его. Это один из тех модулей, который позволяет поиграться с языком и изучить его подробнее.
Для экспериментов вам может пригодиться только метод dis, который принимает классы или функции.
Если вам стало интересно, то вы можете перейти на сайт документации.
#миниурок #dis
Что выведет код выше?
Anonymous Quiz
13%
('foo',)
27%
('foo', 'qux')
42%
Произошла ошибка
8%
Ошибку
10%
Узнать ответ
⚡️ Отсутствующие элементы в словаре
Словари довольно часто используются в работе, и вместо того, чтобы каждый раз получать ошибку при несуществующем ключе, можно просто переопределить её поведение.
В словарях вызывается метод
Примерно так же, как и на фото выше, реализован класс defaultdict из модуля collections.
#теория
Словари довольно часто используются в работе, и вместо того, чтобы каждый раз получать ошибку при несуществующем ключе, можно просто переопределить её поведение.
В словарях вызывается метод
__missing __
, если ключа не существует, но унаследовав класс от dict и переопределив метод, мы можем изменить реакцию программы на отсутствующий ключ.Примерно так же, как и на фото выше, реализован класс defaultdict из модуля collections.
#теория
⚡️ Задачка с собеседования | #Easy
Условие:
Ваша задача — написать функцию, которая должна узнать по ссылке сайт, к которому необходимо обратиться.
Внутри ссылки может быть протокол, путь к файлу, данные, переданные через запрос get, а может и не быть. Всё это необходимо учитывать. Также стоит предусмотреть, что протоколы могут быть разные (http, ftp, https, etc).
Пример:
get_domain("https://xakep.ru/page") -> xakep.ru
get_domain("http://api.github.com") -> api.github.com
get_domain("google.com") -> google.com
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая должна узнать по ссылке сайт, к которому необходимо обратиться.
Внутри ссылки может быть протокол, путь к файлу, данные, переданные через запрос get, а может и не быть. Всё это необходимо учитывать. Также стоит предусмотреть, что протоколы могут быть разные (http, ftp, https, etc).
Пример:
get_domain("https://xakep.ru/page") -> xakep.ru
get_domain("http://api.github.com") -> api.github.com
get_domain("google.com") -> google.com
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Создаём QR-коды
Для этого существует библиотека, как ни странно, qrcode. Она работает с pillow, поэтому придётся установить и его.
Установка:
Если же вам нужно больше настроек, то вы можете самостоятельно создать класс QRCode и передать ему настройки.
Также, вы можете использовать модуль из терминала:
#миниурок #qrcode
Для этого существует библиотека, как ни странно, qrcode. Она работает с pillow, поэтому придётся установить и его.
Установка:
pip install qrcode[pil]
Самый простой способ создания изображения — использование метода make(some_text)
.Если же вам нужно больше настроек, то вы можете самостоятельно создать класс QRCode и передать ему настройки.
Также, вы можете использовать модуль из терминала:
qr "Some text" > test.png
Подробнее об этом можно почитать на сайте документации.#миниурок #qrcode
⚡️ Переменная «_»
Такое интересное название можно встретить во многих скриптах и уроках. Чаще всего это означает, что переменная не используется в коде, но всё равно необходима.
Таким образом отсутствует потребность в придумывании имени для ненужной переменной.
Также, её использует интерпретатор Python, чтобы сохранять туда результат работы команды.
#теория
Такое интересное название можно встретить во многих скриптах и уроках. Чаще всего это означает, что переменная не используется в коде, но всё равно необходима.
Таким образом отсутствует потребность в придумывании имени для ненужной переменной.
Также, её использует интерпретатор Python, чтобы сохранять туда результат работы команды.
#теория
⚡️ Задачка с собеседования | #Easy
Условие:
Написать функцию, которая будет проверять, существует такой треугольник или нет по этому правилу. Она принимает список из трёх сторон треугольника.
Пример:
is_triangle([10, 12, 23]) -> False
is_triangle([0, 0, 0]) -> False
is_triangle([1, 1, 1]) -> True
is_triangle([12, 12, 12]) -> True
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Написать функцию, которая будет проверять, существует такой треугольник или нет по этому правилу. Она принимает список из трёх сторон треугольника.
Пример:
is_triangle([10, 12, 23]) -> False
is_triangle([0, 0, 0]) -> False
is_triangle([1, 1, 1]) -> True
is_triangle([12, 12, 12]) -> True
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Wikipedia
Неравенство треугольника
Нера́венство треуго́льника в геометрии, функциональном анализе и смежных дисциплинах — это одно из интуитивных свойств расстояния. Оно утверждает, что длина любой стороны треугольника всегда не превосходит сумму длин двух его других сторон (или равносильная…
👍1
⚡️ Находим различия
difflib — предустановленная библиотека, позволяющая быстро проводить сравнения файлов, списков, html-кода и других типов.
Это лишь самые популярные команды модуля. Весь их список можете посмотреть на сайте документации.
#миниурок #difflib
difflib — предустановленная библиотека, позволяющая быстро проводить сравнения файлов, списков, html-кода и других типов.
difflib.context_diff(a, b)
— сравнивает два объекта (список или строку) и возвращает генератор, который можно вывести с помощью sys.stdout.writelines
.difflib.get_close_matches(word, possibilities)
— находит наиболее подходящее слово из списка possibilities. С помощью cutoff можно настроить % совпадения (по умолчанию 0.6).Это лишь самые популярные команды модуля. Весь их список можете посмотреть на сайте документации.
#миниурок #difflib
Что выведет код выше?
Anonymous Quiz
26%
<class 'NoneType'>
51%
<class 'tuple'>
5%
<class 'int'>
12%
Ошибку
6%
Узнать ответ
⚡️ Создаём дескрипторы
Дескрипторы — это объекты, позволяющие изменить отображение, хранение и удаление атрибутов
Начать стоит с того, что дескрипторы это всегда атрибуты класса, которые имеют в себе методы
Использовать их можно, например, для создания логов, во время изменения переменной, создания проверочного класса и множества других вариантов.
Дескрипторы имеют более обширный функционал и описать их в одном посте невозможно, поэтому подробнее — на сайте документации.
#теория
Дескрипторы — это объекты, позволяющие изменить отображение, хранение и удаление атрибутов
Начать стоит с того, что дескрипторы это всегда атрибуты класса, которые имеют в себе методы
__get__
, __set__
или __del__
, которые вызываются в зависимости от использования атрибута.Использовать их можно, например, для создания логов, во время изменения переменной, создания проверочного класса и множества других вариантов.
Дескрипторы имеют более обширный функционал и описать их в одном посте невозможно, поэтому подробнее — на сайте документации.
#теория
⚡️ Задачка с собеседования | #Easy, #Hard
Условие:
Ваша задача — написать функцию, которая переворачивает список на k шагов. Она ничего не возвращает, а лишь изменяет полученный список.
k — всегда позитивное число, а размер списка всегда больше нуля.
Задача кажется простой, но её основная сложность, что необходимо найти максимально быстрый способ решения задачи. Поэтому тут 2 тега :)
Пример:
rotate([1,2,3,4,5,6,7], 3) -> [5,6,7,1,2,3,4]
rotate([-1,-100,3,99], 2) -> [3,99,-1,-100]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Ваша задача — написать функцию, которая переворачивает список на k шагов. Она ничего не возвращает, а лишь изменяет полученный список.
k — всегда позитивное число, а размер списка всегда больше нуля.
Задача кажется простой, но её основная сложность, что необходимо найти максимально быстрый способ решения задачи. Поэтому тут 2 тега :)
Пример:
rotate([1,2,3,4,5,6,7], 3) -> [5,6,7,1,2,3,4]
rotate([-1,-100,3,99], 2) -> [3,99,-1,-100]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Проверяем динамическую аннотацию
mypy — скрипт, проверяющий статически заданные типы. Таким образом, mypy позволяет избежать множество багов, связанных с типами.
Установка:
Запускается скрипт командой из терминала:
Учтите, что проверка типов может не пригодится в маленьких проектах, но в больших поможет сохранить несколько часов дебага.
#миниурок #mypy
mypy — скрипт, проверяющий статически заданные типы. Таким образом, mypy позволяет избежать множество багов, связанных с типами.
Установка:
pip install mypy
Скрипт поддерживает множество типов python, от простых int, bool, до типов из модуля typing.Запускается скрипт командой из терминала:
mypy script.py
. После этого, вы получите оповещение об ошибке в неправильном типе передаваемого аргумента.Учтите, что проверка типов может не пригодится в маленьких проектах, но в больших поможет сохранить несколько часов дебага.
#миниурок #mypy