⚡️ Принципы ООП
Инкапсуляция — объединение переменных и методов для работы с ними в один объект. Также таким образом мы скрываем реализацию поведения методов.
Многие предоставляют инкапсуляцию как запрет доступ к данным, через приватные переменные и подобное. Но на самом деле это называется «Сокрытие данных».
Наследование — передача атрибутов базового (родительского) класса производному (дочернему).
Полиморфизм — грубо говоря, возможность одной и той же функции работать по разному, в зависимости от типа.
#oop
Инкапсуляция — объединение переменных и методов для работы с ними в один объект. Также таким образом мы скрываем реализацию поведения методов.
Многие предоставляют инкапсуляцию как запрет доступ к данным, через приватные переменные и подобное. Но на самом деле это называется «Сокрытие данных».
Наследование — передача атрибутов базового (родительского) класса производному (дочернему).
Полиморфизм — грубо говоря, возможность одной и той же функции работать по разному, в зависимости от типа.
#oop
👍12
👍1
⚡️ Лямбда функции
Лямбда функциями называют те, что определены с помощью lambda. Также их называют анонимными функциями, поскольку у них нет имени.
В таких функциях всегда только одно выражение, которое, чаще всего, что-то возвращает. Они могут использовать переменные из конкретной области видимости.
Таким образом нам нужно намного меньше кода для создания простой функции. Также лямбда-функции часто используются вместе с
#теория
Лямбда функциями называют те, что определены с помощью lambda. Также их называют анонимными функциями, поскольку у них нет имени.
В таких функциях всегда только одно выражение, которое, чаще всего, что-то возвращает. Они могут использовать переменные из конкретной области видимости.
Таким образом нам нужно намного меньше кода для создания простой функции. Также лямбда-функции часто используются вместе с
map()
и filter()
.#теория
👍9
Что выведет этот код?
Anonymous Quiz
22%
<class 'type'>
32%
<class '__main__.Foo'>
33%
<class 'Foo'>
14%
Узнать ответ
⚡️ Что за Global Interpreter Lock (GIL)
Если вы интересовались многопоточными программами, то слышали про этот термин. Это означает, что в определённый момент интерпретатором будет выполняться только один поток.
Она не особо влияет на производительность, если приложение работает с I/O-операциями (чтение, запись файла), но если оно активно использует процессор, то никакого прироста от многопоточности вы не получите.
Почему до сих пор не исправили? Есть решения, но они либо очень сложные, либо сделают только хуже. Но, не смотря на это, разработчики сильно улучшили GIL в последних версиях Python.
#теория
Если вы интересовались многопоточными программами, то слышали про этот термин. Это означает, что в определённый момент интерпретатором будет выполняться только один поток.
Она не особо влияет на производительность, если приложение работает с I/O-операциями (чтение, запись файла), но если оно активно использует процессор, то никакого прироста от многопоточности вы не получите.
Почему до сих пор не исправили? Есть решения, но они либо очень сложные, либо сделают только хуже. Но, не смотря на это, разработчики сильно улучшили GIL в последних версиях Python.
#теория
👍3
Что выведет код выше?
Anonymous Quiz
24%
<class 'int'>
46%
<class 'bin'>
12%
<class 'str'>
14%
Ошибку
5%
Узнать ответ
⚡️ Замыкание
Это возможность вложенной функции получить доступ к данным во внешней даже после того, как та выполнилась.
На его основе строится около половины алгоритмов в функциональном программировании. А ещё замыкание позволяет инкапсулировать код.
С этой штукой надо быть осторожным и без надобности не использовать, поскольку она довольно требовательная к ресурсам пк.
#теория
Это возможность вложенной функции получить доступ к данным во внешней даже после того, как та выполнилась.
На его основе строится около половины алгоритмов в функциональном программировании. А ещё замыкание позволяет инкапсулировать код.
С этой штукой надо быть осторожным и без надобности не использовать, поскольку она довольно требовательная к ресурсам пк.
#теория
👍8
Что выведет код выше?
Anonymous Quiz
47%
True True
21%
True False
4%
False True
19%
False False
8%
Узнать ответ
🤔5👍1
⚡️ Три помощника при работе с циклами
Если вы что-то не поняли, то можете посетить документацию: enumerate, zip и reversed.
#теория
enumerate(iter, start=0)
— проходится по итератору и возвращает кортеж (индекс, значение). Если задать второй параметр, то индекс сместиться на start единиц.zip(a, b, c...)
— параллельно проходит по всем объектам, возвращая по элементу с каждого. reversed(obj)
— просто переворачивает obj. Если это не возможно — возвращает ошибку.Если вы что-то не поняли, то можете посетить документацию: enumerate, zip и reversed.
#теория
👍3
⚡️ Немного про регулярные выражения
Все мы знаем, что регулярные выражения пишутся только один раз. После их просто нереально разобрать и изменить.
Один разработчик нашёл способ как это исправить используя f-строки в Python. Вот его статья.
#миниурок #re
Все мы знаем, что регулярные выражения пишутся только один раз. После их просто нереально разобрать и изменить.
Один разработчик нашёл способ как это исправить используя f-строки в Python. Вот его статья.
#миниурок #re
👍3
⚡️ Задачка с собеседования | #Easy
Условие:
Список
Пример:
partssums([0, 1, 3, 6, 10]) ➞ [20, 20, 19, 16, 10, 0]
partssums([1, 2, 3, 4, 5, 6]) ➞ [21, 20, 18, 15, 11, 6, 0]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Список
[0, 1, 3, 6, 10]
можно разделить на части: [0, 1, 3, 6, 10]
, [1, 3, 6, 10]
, [3, 6, 10]
, ..., []
. Вам надо найти сумму всех этих частей. Пример:
partssums([0, 1, 3, 6, 10]) ➞ [20, 20, 19, 16, 10, 0]
partssums([1, 2, 3, 4, 5, 6]) ➞ [21, 20, 18, 15, 11, 6, 0]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
👍2
⚡️ Переопределяем поведение
Python используется магические методы (
Суть в том, что мы можем менять поведение операторов за счёт переопределения этих самых магических методов. Хорошим примером является pathlib с делением.
Кстати, магическими методами называют всё, что окружено двойными подчёркиваниями. Это и
#теория
Python используется магические методы (
__eq__
, __add__
) при работе с операторами (==, +) и не только. Список действий и магических методом можно найти в operator.Суть в том, что мы можем менять поведение операторов за счёт переопределения этих самых магических методов. Хорошим примером является pathlib с делением.
Кстати, магическими методами называют всё, что окружено двойными подчёркиваниями. Это и
__init__
, и __str__
и остальные.#теория
👍1