n = (0b011 + 0o007 + 0x00A)//0XA
Чему равно n?
Чему равно n?
Anonymous Quiz
16%
1
26%
2
26%
2.0
14%
10
9%
20
9%
20.0
Сессия обратной связи.
Чего не хватает каналу больше всего? (Можно выбрать несколько вариантов)
Чего не хватает каналу больше всего? (Можно выбрать несколько вариантов)
Anonymous Poll
27%
Простых задач
23%
Сложных задач
29%
Подсказок к задачам
32%
Решений задач
48%
Постов по теории
50%
Чаще делать посты
3%
Реже делать посты
31%
Сниппетов интересного кода
48%
Подборок материала для изучения python
39%
Новостей из мира python
Каррирование (currying) в python.
Каррирование - это популярная техника функционального программирования, а python поддерживает эту парадигму, поэтому стоит про это немного знать.
На самом деле, каррирование — это преобразование функции с множеством аргументов в набор вложенных функций с одним аргументом.
То есть f(a, b, c) = f(a)(b)(c)
Сложна? Давай разберем пример.
Допустим у нас есть функция, позволяющая отправить email от кого-то кому-то. В упрощенном виде такая:
Оказалось, что в вашей системе не так много лиц от которых шлется email. И от них шлется множество писем в разных ситуациях. Предположим, что их двое: СЕО и CTO компании.
Тогда имеет смысл, возможно, сделать такие манипуляции:
То есть send_email_from возвращает функцию, которой нужно передать только один параметр to, чтобы отправить email.
Как этим пользоваться.
Во-первых, теперь можно посылать письма так:
Что эквивалентно
Во-вторых, теперь можно делать такое
Это означает, что теперь, для того, чтобы отправить письмо от CEO, достаточно написать
что эквивалентно
Это разбиение аргументов по функциям, которые вызывают другие функции - и называется каррированием. Представь, что аргументов было очень много и многие из них редко менялись. Удобно?
Кстати, эта задача была про каррирование... Пересмотри ее еще раз!
Каррирование - это популярная техника функционального программирования, а 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')Это разбиение аргументов по функциям, которые вызывают другие функции - и называется каррированием. Представь, что аргументов было очень много и многие из них редко менялись. Удобно?
Кстати, эта задача была про каррирование... Пересмотри ее еще раз!
Telegram
Junior Python School
Вот это функция. Всем функциям - функция. Хоть в каждый проект ее сувать..
Что же тут будет напечатано?
Что же тут будет напечатано?
print('start')
Cls()()Что будет выведено после
start? 1)
Metaclass __call__ was called2)
__new___ was called
__init__ was called
__call__ was called
Metaclass __new__ was called3)
Metaclass __init__ was called
Metaclass __call__ was called
__new___ was called
__init__ was called
__call__ was called
__new___ was called4)
__init__ was called
__call__ was called
Metaclass __new__ was called
Metaclass __init__ was called
__new___ was called
__init__ was called
__call__ was calledСложные вопросы заставляют новичков грустить. Лёгкие вопросы не по вкусу опытным..
Будем искать баланс? Какого параметра НЕТ у встроенной функции print()?
Будем искать баланс? Какого параметра НЕТ у встроенной функции print()?
Anonymous Quiz
10%
sep
6%
end
16%
file
37%
err
31%
flush
Как теперь будем реализовывать синглтон?
Anonymous Poll
41%
Через декоратор
24%
Через метакласс
34%
Я ещё разбираюсь с темами в конце статьи...
#ЛАЙФХАК
Используешь pycharm? Хочешь научиться делать это продуктивно?
Обрати внимание на вкладку help.
Эта вкладка поможет:
1) Найти необходимую информацию, если возник вопрос.
2) Научиться работать с пайчармом с помощью документации или, например, записанных видео-туториалов
3) Изучить список горячих клавиш
4) Решить проблему с производительностью
Самое главное на этой вкладке это Productivity Guide. Отвлекись сейчас от кода, нажми на каждый совет в списке и попробуй его воспроизвести в своем проекте. Обещаем, несколько советов из списка ты начнешь использовать на постоянной основе.
К тому же, вкладка показывает насколько продуктивно ты используешь pycharm и сколько времени ты экономишь.
Используешь pycharm? Хочешь научиться делать это продуктивно?
Обрати внимание на вкладку help.
Эта вкладка поможет:
1) Найти необходимую информацию, если возник вопрос.
2) Научиться работать с пайчармом с помощью документации или, например, записанных видео-туториалов
3) Изучить список горячих клавиш
4) Решить проблему с производительностью
Самое главное на этой вкладке это Productivity Guide. Отвлекись сейчас от кода, нажми на каждый совет в списке и попробуй его воспроизвести в своем проекте. Обещаем, несколько советов из списка ты начнешь использовать на постоянной основе.
К тому же, вкладка показывает насколько продуктивно ты используешь pycharm и сколько времени ты экономишь.
Мы уже обсуждали эту тему (про name mangling, но там много нюансов..)
Тест по питону еще помните?
Его когда-то мы выкладывали и получили мощный фидбек)
Попробуйте пройти его еще раз. Почувствуйте прогресс!
Его когда-то мы выкладывали и получили мощный фидбек)
Попробуйте пройти его еще раз. Почувствуйте прогресс!
Django вопрос
Сколько встроенных admin панелей может быть у одного django-проекта?
Сколько встроенных admin панелей может быть у одного django-проекта?
Anonymous Quiz
10%
У Django нет встроенной админки
48%
Ровно одна
43%
Сколько угодно
Время простых вопросов. Хотя...
Чему равно в python? 0 ** 0 ** 0
Чему равно в python? 0 ** 0 ** 0
Anonymous Quiz
34%
1
49%
0
3%
4294967295
14%
Error
Задача, в которой можно юзать интерпретатор. Главное разобраться потом в вопросе..
Стандартный интерпретатор cpython..
int(0.1*10**24)%10 = ?
Стандартный интерпретатор 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