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
Какой метод тут должен быть вместо METHOD?
Anonymous Quiz
27%
dict
23%
group
10%
groups
23%
groupdict
10%
span
7%
regs
sum(iterable, /, start=0) - воистину магическая встроенная функция питонистского языка.

Пример:
>>> sum([1, 2, 3])
6
>>> sum([1, 2, 3], 2)
8

Простая сумма. Ничего сложного?
Но сможешь ли ты пройти тест, или ошибешься?

Мы очень радуемся, когда много людей ошибаются при решении наших тестов. Значит тест был не зря и мы смогли чем-то вас удивить.

Не стесняйся задавать вопросы знакомым программистам, или даже просто спрашивать что-то в питонячьих чатах или на stackoverflow. Пока другие тратят дни, чтобы дойти до чего-то самим, ты можешь потратить всего пару часов и выучить сильно больше. Ибо мир меняется слишком быстро..
Планируем запуск обещанного бесплатного мастер класса по библиотеке itertools. Материалы уже готовы. Должно быть очень интересно.

Мастер класс хотим провести в отдельно созданном для этого канале в ближайшее время. Анонс пришлём позже. Ты с нами?
Anonymous Poll
78%
Да, я определенно с вами
22%
Я очень постараюсь поучаствовать
Вот это функция. Всем функциям - функция. Хоть в каждый проект ее сувать..

Что же тут будет напечатано?
Что будет напечатано?
Anonymous Quiz
15%
Ничего
4%
30
2%
60
6%
90
5%
300
29%
900
39%
Ошибка
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