HTML Diff
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&amp;ab_channel=egoroff_channel</a>) и Замыкания в Python Часть 2. Closure Python part 2 (<a>https://www.youtube.com/watch?v=vrkLShOYwI0&amp;ab_channel=egoroff_channel</a>). И вот к концу второго видеоурока я начал понимать, что именно я делаю не так.</p>
32 <li><p>Взял данные из тестов и уже с ними стал громоздить разнообразные конструкции, действую в парадигме того, что замыканием должна быть именно вызываемая функция. Ничего не получалось. Полез "гуглить". В основном попадались примеры, аналогичные приведённым в уроке, то есть конструкции из функций от одной или двух переменных в виде параметров. Через некоторое время наткнулся на видеоуроки с Ютуба Замыкания в Python. Closure Python (<a>https://www.youtube.com/watch?v=lA979PBb0TY&amp;ab_channel=egoroff_channel</a>) и Замыкания в Python Часть 2. Closure Python part 2 (<a>https://www.youtube.com/watch?v=vrkLShOYwI0&amp;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>