0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Отзыв на урок №8 и упражнение к нему в курсе "Python: Функции"</strong></p>
1
<p><strong>Отзыв на урок №8 и упражнение к нему в курсе "Python: Функции"</strong></p>
2
<p><strong>Причины написания отзыва:</strong></p>
2
<p><strong>Причины написания отзыва:</strong></p>
3
<ol><li><p>Ощущения от курса "<a>Python: Функции</a>" и особенно от урока №8 сильно контрастируют с ощущениями от всех ранее пройденных курсов в рамках профессии "<a>Python-разработчик</a>". И не в пользу упомянутого урока.</p>
3
<ol><li><p>Ощущения от курса "<a>Python: Функции</a>" и особенно от урока №8 сильно контрастируют с ощущениями от всех ранее пройденных курсов в рамках профессии "<a>Python-разработчик</a>". И не в пользу упомянутого урока.</p>
4
</li>
4
</li>
5
<li><p>На решение простого (как после выяснилось) упражнения у меня ушло около трёх часов.</p>
5
<li><p>На решение простого (как после выяснилось) упражнения у меня ушло около трёх часов.</p>
6
</li>
6
</li>
7
<li><p>Ранее для решения упражнения мне хватало приведённой в уроке и ранее разобранной теории, или в крайнем случае прибегал к дополнительным материалам, ссылки на который есть в материалах урока или курса. В этом уроке так не получилось. Да и дополнительных материалов к уроку и к курсу в целом нет.</p>
7
<li><p>Ранее для решения упражнения мне хватало приведённой в уроке и ранее разобранной теории, или в крайнем случае прибегал к дополнительным материалам, ссылки на который есть в материалах урока или курса. В этом уроке так не получилось. Да и дополнительных материалов к уроку и к курсу в целом нет.</p>
8
</li>
8
</li>
9
</ol><p><strong>Содержание урока:</strong></p>
9
</ol><p><strong>Содержание урока:</strong></p>
10
<p>В уроке рассматривается тема "Замыканий" - это такой способ работать с функциями внутри функций в Python. А также приведены примеры работы данных "замыканий". Примеров всего три, и они иллюстрируют процессы работы с функциями одной переменной.</p>
10
<p>В уроке рассматривается тема "Замыканий" - это такой способ работать с функциями внутри функций в Python. А также приведены примеры работы данных "замыканий". Примеров всего три, и они иллюстрируют процессы работы с функциями одной переменной.</p>
11
<p><strong>Содержание упражнения:</strong></p>
11
<p><strong>Содержание упражнения:</strong></p>
12
<p>Далее прямое цитирование:</p>
12
<p>Далее прямое цитирование:</p>
13
<p><em>В этом упражнении вам нужно будет реализовать две функции высшего порядка, возвращающие замыкания: partial_apply() и flip().</em></p>
13
<p><em>В этом упражнении вам нужно будет реализовать две функции высшего порядка, возвращающие замыкания: partial_apply() и flip().</em></p>
14
<p><em>partial_apply() принимает функцию от двух аргументов и первый аргумент для неё, а возвращает замыкание - функцию, которая примет второй аргумент и наконец применит замкнутую функцию к обоим аргументам (и вернёт результат).</em></p>
14
<p><em>partial_apply() принимает функцию от двух аргументов и первый аргумент для неё, а возвращает замыкание - функцию, которая примет второй аргумент и наконец применит замкнутую функцию к обоим аргументам (и вернёт результат).</em></p>
15
<p>def greet(name, surname): return f'Hello, {name} {surname}!' f = partial_apply(greet, 'Dorian') f('Grey') # 'Hello, Dorian Grey!'</p>
15
<p>def greet(name, surname): return f'Hello, {name} {surname}!' f = partial_apply(greet, 'Dorian') f('Grey') # 'Hello, Dorian Grey!'</p>
16
<p><em>Функция flip() принимает в качестве единственного аргумента функцию от двух аргументов. Возвращаемое замыкание должно также принять два аргумента, а затем применить к ним замкнутую функцию, но аргументы подставить в обратном порядке. Таким образом flip() как бы "переворачивает" ("flips") исходную функцию.</em></p>
16
<p><em>Функция flip() принимает в качестве единственного аргумента функцию от двух аргументов. Возвращаемое замыкание должно также принять два аргумента, а затем применить к ним замкнутую функцию, но аргументы подставить в обратном порядке. Таким образом flip() как бы "переворачивает" ("flips") исходную функцию.</em></p>
17
<p>def greet(name, surname): return f'Hello, {name} {surname}!' f = flip(greet) f('Christian', 'Teodor') # 'Hello, Teodor Christian!'_</p>
17
<p>def greet(name, surname): return f'Hello, {name} {surname}!' f = flip(greet) f('Christian', 'Teodor') # 'Hello, Teodor Christian!'_</p>
18
<p><strong>Ощущения от урока и упражнения:</strong></p>
18
<p><strong>Ощущения от урока и упражнения:</strong></p>
19
<ol><li><p>После прочтения урока складывается ощущение, что речь идёт о каком-то не очень нужном и малополезном функционале языка Python. Нет примера или описания, который мог бы проиллюстрировать зачем мне понадобится данный функционал в моей будущей работе. А еще в конце урока слова "… не является эксклюзивным для Python "костылём"…" закрепляют ощущения.</p>
19
<ol><li><p>После прочтения урока складывается ощущение, что речь идёт о каком-то не очень нужном и малополезном функционале языка Python. Нет примера или описания, который мог бы проиллюстрировать зачем мне понадобится данный функционал в моей будущей работе. А еще в конце урока слова "… не является эксклюзивным для Python "костылём"…" закрепляют ощущения.</p>
20
</li>
20
</li>
21
<li><p>Язык, которым написан урок и упражнение к нему ощущается, как диалог двух профессионалов, для которых очевиден контекст и нюансы. То есть мне, как читателю, должно быть и так всё понятно. Но, честно говоря, понятно оказалось не всё и не сразу.</p>
21
<li><p>Язык, которым написан урок и упражнение к нему ощущается, как диалог двух профессионалов, для которых очевиден контекст и нюансы. То есть мне, как читателю, должно быть и так всё понятно. Но, честно говоря, понятно оказалось не всё и не сразу.</p>
22
</li>
22
</li>
23
<li><p>Не сложное на первый взгляд упражнение приводит в ступор при решении. Понимаешь, что решение должно занять несколько строк, что оно не сложное… и не решаешь и всё тут. Перечитываешь теорию, копируешь в VS Code примеры и по-всякому крутишь их в надежде понять, ищешь дополнительные материалы в курсе, а их нет… Гуглишь и не находишь с первых попыток примеров, отличных от приведённых в уроке… Начинаешь чувствовать себя "туповатым"… Злишься на курс…</p>
23
<li><p>Не сложное на первый взгляд упражнение приводит в ступор при решении. Понимаешь, что решение должно занять несколько строк, что оно не сложное… и не решаешь и всё тут. Перечитываешь теорию, копируешь в VS Code примеры и по-всякому крутишь их в надежде понять, ищешь дополнительные материалы в курсе, а их нет… Гуглишь и не находишь с первых попыток примеров, отличных от приведённых в уроке… Начинаешь чувствовать себя "туповатым"… Злишься на курс…</p>
24
</li>
24
</li>
25
<li><p>А вот когда нашел решение, вот тут прям ярость охватывает. Решение действительно простое. А вот примера или текста урока, который направил бы к этому решению нет. И да, это моё личное мнение и ощущение, возможно у вас всё было иначе.</p>
25
<li><p>А вот когда нашел решение, вот тут прям ярость охватывает. Решение действительно простое. А вот примера или текста урока, который направил бы к этому решению нет. И да, это моё личное мнение и ощущение, возможно у вас всё было иначе.</p>
26
</li>
26
</li>
27
</ol><p><strong>Поиск решения:</strong></p>
27
</ol><p><strong>Поиск решения:</strong></p>
28
<ol><li><p>Сперва попытался в лоб решить и вызвал функцию<em>greet(name, surname)</em>непосредственно в созданной функции<em>partial_apply()</em>, рассчитывая, что замыканием будет сама функция<em>greet()</em>. Но так оно не работает…</p>
28
<ol><li><p>Сперва попытался в лоб решить и вызвал функцию<em>greet(name, surname)</em>непосредственно в созданной функции<em>partial_apply()</em>, рассчитывая, что замыканием будет сама функция<em>greet()</em>. Но так оно не работает…</p>
29
</li>
29
</li>
30
<li><p>Перечитав ещё раз теорию я решил воспользоваться приведёнными примерами и создал функцию<em>greet(name, surname)</em>внутри функции<em>partial_apply()</em>. Такая конструкция выводила правильный результат (соответствующий приведённому в упражнении), но тесты не проходила. Оно и понятно, так как в задании подразумевалось, на входе функция<em>partial_apply()</em>должна в виде данных принимать внешнюю функцию от двух переменных и один параметр. Полез разбираться в тестах (вот тут отдельное спасибо за понятно написанные тесты).</p>
30
<li><p>Перечитав ещё раз теорию я решил воспользоваться приведёнными примерами и создал функцию<em>greet(name, surname)</em>внутри функции<em>partial_apply()</em>. Такая конструкция выводила правильный результат (соответствующий приведённому в упражнении), но тесты не проходила. Оно и понятно, так как в задании подразумевалось, на входе функция<em>partial_apply()</em>должна в виде данных принимать внешнюю функцию от двух переменных и один параметр. Полез разбираться в тестах (вот тут отдельное спасибо за понятно написанные тесты).</p>
31
</li>
31
</li>
32
<li><p>Взял данные из тестов и уже с ними стал громоздить разнообразные конструкции, действую в парадигме того, что замыканием должна быть именно вызываемая функция. Ничего не получалось. Полез "гуглить". В основном попадались примеры, аналогичные приведённым в уроке, то есть конструкции из функций от одной или двух переменных в виде параметров. Через некоторое время наткнулся на видеоуроки с Ютуба Замыкания в Python. Closure Python (<a>https://www.youtube.com/watch?v=lA979PBb0TY&ab_channel=egoroff_channel</a>) и Замыкания в Python Часть 2. Closure Python part 2 (<a>https://www.youtube.com/watch?v=vrkLShOYwI0&ab_channel=egoroff_channel</a>). И вот к концу второго видеоурока я начал понимать, что именно я делаю не так.</p>
32
<li><p>Взял данные из тестов и уже с ними стал громоздить разнообразные конструкции, действую в парадигме того, что замыканием должна быть именно вызываемая функция. Ничего не получалось. Полез "гуглить". В основном попадались примеры, аналогичные приведённым в уроке, то есть конструкции из функций от одной или двух переменных в виде параметров. Через некоторое время наткнулся на видеоуроки с Ютуба Замыкания в Python. Closure Python (<a>https://www.youtube.com/watch?v=lA979PBb0TY&ab_channel=egoroff_channel</a>) и Замыкания в Python Часть 2. Closure Python part 2 (<a>https://www.youtube.com/watch?v=vrkLShOYwI0&ab_channel=egoroff_channel</a>). И вот к концу второго видеоурока я начал понимать, что именно я делаю не так.</p>
33
</li>
33
</li>
34
<li><p>В задании надо просто в теле функции<em>partial_apply()</em>создать функцию "замыкание", в которой уже и вызвать внешнюю функцию<em>greet()</em>. Вроде как "ларчик просто открывался", но это простое знание вот ни как мне не удалось вытащить из урока №8. И дополнительных материалов к уроку нет, что вынуждает "блуждать по интернету" в поисках и сомнениях. Развитие навыка самостоятельного поиска, конечно, тоже важно, но почему-то именно в этом уроке оно начало проявляться, в отличии от ранее пройденных мною 14 курсах на Хекслете. Раньше справлялся теми материалами, которые даны в уроке и в приложениях.</p>
34
<li><p>В задании надо просто в теле функции<em>partial_apply()</em>создать функцию "замыкание", в которой уже и вызвать внешнюю функцию<em>greet()</em>. Вроде как "ларчик просто открывался", но это простое знание вот ни как мне не удалось вытащить из урока №8. И дополнительных материалов к уроку нет, что вынуждает "блуждать по интернету" в поисках и сомнениях. Развитие навыка самостоятельного поиска, конечно, тоже важно, но почему-то именно в этом уроке оно начало проявляться, в отличии от ранее пройденных мною 14 курсах на Хекслете. Раньше справлялся теми материалами, которые даны в уроке и в приложениях.</p>
35
</li>
35
</li>
36
</ol><p>Все вышеописанные действия происходили в несколько подходов и в сумме заняли около трёх часов.</p>
36
</ol><p>Все вышеописанные действия происходили в несколько подходов и в сумме заняли около трёх часов.</p>
37
<p><strong>Пожелания:</strong></p>
37
<p><strong>Пожелания:</strong></p>
38
<p>Уважаемые разработчики курсов Хекслет, у вас получается делать по-настоящему классный образовательный продукт, но курс "Python: Функции" и особенно урок №8 вызвал у меня сильные отталкивающие чувства. Прошу Вас переработать курс. На мой взгляд в курс необходимо добавить дополнительные материалы, упростить язык повествования (сделать его более доступным к пониманию без контекста) и добавить больше разобранных примеров. Не сомневаюсь, что у вас получится сделать его на уровне с остальные замечательными курсами.</p>
38
<p>Уважаемые разработчики курсов Хекслет, у вас получается делать по-настоящему классный образовательный продукт, но курс "Python: Функции" и особенно урок №8 вызвал у меня сильные отталкивающие чувства. Прошу Вас переработать курс. На мой взгляд в курс необходимо добавить дополнительные материалы, упростить язык повествования (сделать его более доступным к пониманию без контекста) и добавить больше разобранных примеров. Не сомневаюсь, что у вас получится сделать его на уровне с остальные замечательными курсами.</p>