Junior Python School
705 subscribers
92 photos
29 links
Surprising the python community with pure python 🔝

Moving channel from Russian to English.


Enthusiastic reviews can be written to @pythonjuniorschoolacc ❤️
Download Telegram
n = (0b011 + 0o007 + 0x00A)//0XA

Чему равно n?
Anonymous Quiz
16%
1
26%
2
26%
2.0
14%
10
9%
20
9%
20.0
Подсказка к предыдущей задачке. 🦉
И да, регистр не имеет значения, как и количество нулей между обозначением системы счисления и числом)
Каррирование (currying) в python.

Каррирование - это популярная техника функционального программирования, а python поддерживает эту парадигму, поэтому стоит про это немного знать.

На самом деле, каррирование — это преобразование функции с множеством аргументов в набор вложенных функций с одним аргументом.
То есть f(a, b, c) = f(a)(b)(c)

Сложна? Давай разберем пример.
Допустим у нас есть функция, позволяющая отправить email от кого-то кому-то. В упрощенном виде такая:
def send_email(from_, to):
print(f'Email is sent from {from_} to {to}')
Оказалось, что в вашей системе не так много лиц от которых шлется email. И от них шлется множество писем в разных ситуациях. Предположим, что их двое: СЕО и CTO компании.
Тогда имеет смысл, возможно, сделать такие манипуляции:
def send_email_from(from_):
return lambda to: send_email(from_, to)
То есть send_email_from возвращает функцию, которой нужно передать только один параметр to, чтобы отправить email.

Как этим пользоваться.
Во-первых, теперь можно посылать письма так:
send_email_from(CEO_EMAIL)('someone')
Что эквивалентно
send_email(CEO_EMAIL, 'someone')
Во-вторых, теперь можно делать такое
email_ceo = send_email_from(CEO_EMAIL)
Это означает, что теперь, для того, чтобы отправить письмо от CEO, достаточно написать
email_ceo('someone')
что эквивалентно
send_email(CEO_EMAIL, 'someone')
Это разбиение аргументов по функциям, которые вызывают другие функции - и называется каррированием. Представь, что аргументов было очень много и многие из них редко менялись. Удобно?


Кстати, эта задача была про каррирование... Пересмотри ее еще раз!
print('start')
Cls()()

Что будет выведено после start?
1)
Metaclass __call__ was called
__new___ was called
__init__ was called
__call__ was called
2)
Metaclass __new__ was called
Metaclass __init__ was called
Metaclass __call__ was called
__new___ was called
__init__ was called
__call__ was called
3)
__new___ was called
__init__ was called
__call__ was called
4)
Metaclass __new__ was called
Metaclass __init__ was called
__new___ was called
__init__ was called
__call__ was called
Что будет выведено на экран?
Anonymous Quiz
29%
1
30%
2
16%
3
25%
4
Сложные вопросы заставляют новичков грустить. Лёгкие вопросы не по вкусу опытным..

Будем искать баланс? Какого параметра НЕТ у встроенной функции print()?
Anonymous Quiz
10%
sep
6%
end
16%
file
37%
err
31%
flush
#ЛАЙФХАК
Используешь pycharm? Хочешь научиться делать это продуктивно?

Обрати внимание на вкладку help.

Эта вкладка поможет:
1) Найти необходимую информацию, если возник вопрос.
2) Научиться работать с пайчармом с помощью документации или, например, записанных видео-туториалов
3) Изучить список горячих клавиш
4) Решить проблему с производительностью

Самое главное на этой вкладке это Productivity Guide. Отвлекись сейчас от кода, нажми на каждый совет в списке и попробуй его воспроизвести в своем проекте. Обещаем, несколько советов из списка ты начнешь использовать на постоянной основе.

К тому же, вкладка показывает насколько продуктивно ты используешь pycharm и сколько времени ты экономишь.
Мы уже обсуждали эту тему (про name mangling, но там много нюансов..)
Что будет выведено на экран?
Anonymous Quiz
36%
True
39%
False
25%
Error
Итераторы итерируют итерирующие итераторы.⚡️
Что выведет этот код?
Anonymous Quiz
33%
1
16%
2
9%
3
42%
StopIteration Exception
Тест по питону еще помните?
Его когда-то мы выкладывали и получили мощный фидбек)

Попробуйте пройти его еще раз. Почувствуйте прогресс!
Django вопрос

Сколько встроенных admin панелей может быть у одного django-проекта?
Anonymous Quiz
10%
У Django нет встроенной админки
48%
Ровно одна
43%
Сколько угодно
Время простых вопросов. Хотя...

Чему равно в python? 0 ** 0 ** 0
Anonymous Quiz
34%
1
49%
0
3%
4294967295
14%
Error
Задача, в которой можно юзать интерпретатор. Главное разобраться потом в вопросе..
Стандартный интерпретатор cpython..
int(0.1*10**24)%10 = ?
Anonymous Quiz
46%
0
22%
1
3%
2
2%
3
9%
4
4%
5
3%
6
1%
7
10%
8
1%
9
Пытаемся решать задачи сразу на несколько тем. Понимание множеств, словарей и списков делает жизнь питонистов приятнее
Что будет выведено на экран?

Картинка выше)
Anonymous Quiz
25%
False False
16%
False True
28%
True False
32%
True True
Задачки на канале нужно:
Anonymous Poll
44%
Упростить
56%
Усложнить