Создатель python – Обучение на Python Developer: программист питон — обучение на разработчика Python | GeekBrains — образовательный портал | GeekBrains

Содержание

Персона. Гвидо Ван Россум — создатель Python / Habr

Гвидо ван Россум известен как создатель языка Python. С момента создания языка Гвидо многократно награждался различными премиями. В 2001 году он получил награду за вклад в развитие свободного программного обеспечения от ‘Free Software Foundation’, а в мае 2003-го удостоился премии ‘NLUUG Award’. В 2006 году ему присвоили звание Выдающегося Инженера.

Свободное от работы время Гвидо уделяет семье и самообразованию. Он большой фанат сериала ‘Летающий цирк Монти Пайтона’ (Monty Python’s Flying Circus), именно в честь этого шоу и был назван язык программирования Python.

Гвидо ван Россум родился 31 января 1956 года в Нидерландах. С детства мальчик увлекался техникой: его больше интересовало железо, нежели программное обеспечение.

Он признается, что уже не может вспомнить, почему и как начал увлекаться этим.

Но такой выбор был непопулярным среди его одноклассников. Поэтому в классе не понимали его увлечение «железками». Когда Гвидо принес в школу собственный проект, никому до этого не было дела. «Это неприятное воспоминание», – рассказывает Ван Россум. Однако вопреки непониманию и неодобрению со стороны сверстников мальчик продолжил заниматься своим делом.

«У меня была большая мечта — создать свой собственный электронный калькулятор из дискретных компонентов. Я так и не сделал калькулятор, но я сделал несколько цифровых часов. И как же это удивительно, сделать что-то сложное и увидеть, как это работает».

После окончания школы поступил в Университет Амстердама (University of Amsterdam).

Гвидо учился на математическом факультете. Но среди прочих предметов было и программирование. В рамках обучения студенты посещали компьютерные лаборатории, в которых тогда еще работали мейнфреймы. Юноша быстро понял, что работа с компьютерами была для него не просто частью учебной программы, а по-настоящему приятным времяпрепровождением.

Если раньше его ум целиком и полностью занимала электроника, аналоговые и цифровые интегральные схемы, то теперь за ресурсы его головного мозга начало активно конкурировать программирование. Гвидо набирал программы на перфокартах.

«Это был очень медленный и утомительный процесс, но было жутко интересно разобраться, как оно работает», – вспоминает он.

Со временем любознательный студент забросил электронику и полностью погрузился в премудрости программирования, так как оно в итоге показалось ему более интересным. На втором году обучения Ван Россум понял, что математика ему дается не слишком легко. Затруднения вызывали даже такие базовые дисциплины, как алгебра и интегральное исчисление. Тогда он решил, что «серьезная математика» – не его конек.

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

Затянувшаяся подработка

Ван Россум не мог упустить возможность устроиться в университетский дата-центр на частичную занятость. Там было совсем мало мест для студентов. Более того, они принимали на работу только самых талантливых из них. Гвидо удалось получить место. Он проработал там более пяти лет, пока был студентом. Правда, его успеваемость начала падать. Собственно, этого следовало ожидать.

Работа настолько доставляла ему удовольствие, что он просто забывал про учебу. Так подающий надежды студент оказался на грани отчисления. К счастью, его начальник, и по совместительству профессор университета, вовремя уберег юношу от опрометчивых поступков. Он убедил Гвидо продолжить обучение, объяснив, что без диплома он не сможет оставаться на любимой работе.

В 1982-м году Гвидо Ван Россум получил степень магистра в математике и компьютерных науках. После этого он работал в различных университетах и компьютерных лабораториях – как в Европе, так и в Соединенных Штатах.

Python

«В декабре 1989-го года я искал проект, который бы стал хобби на рождественские каникулы. Офис со всем оборудованием не работал и, не имея необходимых ресурсов, я начал дорабатывать ABC, но на протяжении работы я и не думал, что может получиться что-то серьезное», – вспоминает Гвидо.

Именно тогда у него возникла идея создания нового языка программирования. Язык Python был задуман как потомок языка программирования ABC, способный к обработке исключений и взаимодействию с операционной системой Amoeba.

Amoeba — открытая микроядерная распределённая операционная система, разработанная группой во главе с Эндрю Таненбаумом в Амстердамском свободном университете. Amoeba не основана ни на одной из существующих операционных систем, так как разрабатывалась «с нуля».

От других языков программирования Python отличался простотой, открытым кодом, предоставляющим любому пользователю возможность вносить свои коррективы, и упрощенным использованием английского. Несмотря на то, что команды несколько отличались от популярных на тот момент языков, программисты легко осваивали язык и уже через несколько дней могли свободно использовать его в своей работе. Среди корпораций, которые сейчас используют этот язык программирования, – Google, Yahoo!, CERN, NASA и многие другие.

Python поддерживает несколько парадигм программирования, в том числе процедурную, объектно-ориентированную, императивную и функциональную.

На Python также написаны многие популярные приложения, например, бесплатный офисный пакет LibreOffice. На базе Python были созданы еще несколько языков программирования, не получивших большого распространения.

Гвидо придерживался нескольких правил, которые во многом повлияли на развитие отрасли: использование открытого кода, использование упрощенного английского, что позволяло программистам из других стран не тратить время на глубокое изучение языка, и лаконичность кода, его удобство для ежедневного использования.

Ван Россум был одним из первых разработчиков и программистов, выступавших за развитие свободного программного обеспечения и популяризацию открытого кода.

Именно Гвидо впервые употребил к себе юмористический титул – «Великодушный пожизненный диктатор» (Benevolent Dictator For Life).

Под его руководством находятся другие пользователи, нужды которых он должен удовлетворять. Однако при условии, что количество пользователей, мнение которых расходится с мнением диктатора, постоянно увеличивается, они имеют право отделиться и начать собственные разработки.

На сегодняшний день Python является одним из самых используемых языков программирования в мире.

Дальнейшее развитие карьеры

С 2005 года Гвидо ван Россум работал в Google в качестве разработчика (продолжая посвящать языку Python половину рабочего времени). В компании он занимался созданием системы Mondrian, написанной, как несложно догадаться, почти полностью на языке Python.

Через 7 лет, в 2012 году, Гвидо покинул Google для того, чтобы присоединиться к облачному сервису хранения данных Dropbox.

В интервью Гвидо прокомментировал ситуацию так:

После семи лет работы в Google я был готов к каким-либо изменениям в окружающей обстановке, и тут поступило предложение от Dropbox. По большому счету моя работа не сильно изменилась. Я всё ещё:

• трачу 50% времени на то, что я обычно делаю согласно своей роли Великодушного Пожизненного Диктатора;
• я обычный инженер в этой организации (не менеджер и даже не руковожу группой – не Team Leader;
• часто делаю инспекцию кода (code review), разрабатываю архитектуру и дизайн;
• разбираю много электронных писем;
• пишу код на Python.

Детали работы конечно отличаются. Фактически в Google я делал две вещи: поначалу два года я работал над первым online-инструментом инспекции кода (code review) Mondrian, который хоть и не был open source, но породил Rietveld. Сейчас Rietveld используется в проектах Python, Go и Chromium. После этого я присоединился к Google App Engine, где занимался множеством разных вещей, в основном касающихся Python. Моим последним большим проектом был новый Python API для базы данных, NDB.

В компании Dropbox моим первым проектом был дизайн Dropbox Datastore API. По иронии судьбы (я не виноват), здесь тоже присутствует слово «datastore». Есть общие черты у Dropbox Datastore и Google App Engine Datastore.


Python компания Dropbox использует для разработки своих приложений. Он был выбран Dropbox не случайно, а по той причине, что позволяет существенно упростить процесс разработки.

«С самого своего основания мы в Dropbox поддерживали все наиболее популярные операционные системы. Но такая задача всегда представляет большую сложность для разработчиков: каждая платформа базируется на собственных средствах и языках программирования, поэтому приходится писать один и тот же код несколько раз», – рассказывал один из основателей Dropbox Дрю Хьюстон.

«У нас нет времени на это, и к счастью Python пришел на помощь, – продолжил Хьюстон. – Особенности этого языка позволили нам писать код один раз и затем запускать его в любой среде».

Критика Python

Гвидо Ван Россум не согласился с критиками, утверждавшими, что Python слишком медлителен. Он заявил, что его приложения, написанные на этом языке, всегда получались достаточно быстрыми.
Люди берут инструмент и пишут что-то невероятное, и делают нечто безумное в ходе написания этих невероятных штуковин. Иногда такое безумие связано с кучей вычислений, обходом графа с миллиардом социальных связей или анализом триллиона сообщений электронной почты или чем-то таким.

Рано или поздно дело кончается тем, что одним небольшим куском всей создаваемой системы поглощаются все ресурсы. Если вы простодушно оформите его как простой пайтоновский цикл, вы увидите в конце концов, что он и станет узким местом вашей системы. Обычно гораздо быстрее взять этот кусок и переписать его в виде функции или модуля на C или C++, чем переписывать всю систему на более быстром языке, поскольку для большей части того, что вы делаете, скорость языка не имеет значения.


Python-сообщество и его перспективы

В одном из интервью Гвидо Ван Россум рассказывал о своих отношениях с экосистемой Python.

Как вы выдерживаете баланс между пожеланиями пользователей, поступающих ежедневно, и долгосрочными планами по доработке языка?

В сообществе Python достаточно много ключевых разработчиков, которые выполняют огромный объем работы по написанию и проверке кода. В этой группе разработчиков налажены свои процессы по доработке языка. За более чем 20 лет работы мы выяснили для себя некоторые ограничения, направляющие эти процессы.

Если мы вносим изменения в язык слишком быстро, пользователи начинают «отставать» и жаловаться, что с каждой новой версией Python их программы ломаются. Если изменения происходят слишком медленно, пользователи жалуются, что баги своевременно не исправляются, а их пожелания по доработке никогда не будут учтены с такими темпами.

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

Со временем выработался целостный взгляд на то, что нужно добавить в основной проект или в библиотеку, а что лучше оставить в качестве сторонних open source проектов, которые люди могут использовать по мере необходимости.

Разобравшись во всем этом, я получил огромный опыт. Сейчас мы достигли такого уровня, что в случае моего ухода сообщество продолжит функционировать в обычном режиме. Разработчики понимают, что и почему мы делаем, как мы принимаем решения. Кроме того, эти решения будут приняты за разумное время.

И что будете делать, если покинете сообщество?

Хороший вопрос… Я думаю об уходе, думаю, какие последствия это будет иметь для меня, для моей семьи. Но пока я еще размышляю над ответом на этот вопрос.

Вас когда-нибудь беспокоило появление очередного перспективного языка программирования, который привлекает всеобщее внимание?

Меня это не беспокоит. Я вижу циклы, по которым изменяется популярность систем, языков программирования и ПО в целом. Она приходит и уходит. Я не знаю, что будет с Python через 5 или 15 лет, но я уверен в одном: Python не исчезнет в одночасье. Я надеюсь, что язык до сих пор имеет большие перспективы, он вбирает в себя новые идеи и адаптируется к новому окружению.
Возможно, на каком-то этапе появится какой-то проект, который позаимствует ряд идей у Python и других языков программирования, переработав их в каком-то другом ключе.

Как изменились перспективы Python после того, как вы отрастили бороду? Насколько успех языка коррелирует с длиной бороды?

Борода абсолютно необходима. Посмотрите на судьбу Perl — всё дело в идеальном выбритом подбородке Ларри Уолла.

я устал, я ухожу / Habr

Теперь, когда PEP 5721 готов, я хочу чтобы это был последний PEP за который мне пришлось так отчаянно сражаться сталкиваясь с таким количеством людей презирающих моё мнение.


1 PEP или Python Enhancement Proposal — предложение по расширению Питона.

PEP 572 останется в истории не только как последний PEP эпохи Гвидо ван Россума, но и благодаря новому оператору присваивания который вызывал неоднозначную эмоциональную реакцию пользователей Питона.

Я бы хотел полностью исключить себя из процесса принятия решений. Я ещё буду доступен какое-то время как обычный старший разработчик2, и я ещё буду продолжать менторить3, у меня даже будет на это больше времени. Но в сущности, я отправляю себя в постоянный отпуск с должности Великодушного пожизненного диктатора4, и отныне вы будете сами по себе.


2 Старший разработчик Питона — Python Core Dev, человек имеющий право комитить без ревью прямо в мастер. Подписывает особое соглашение. Принимается сложным процессом.

Гитхаб показывает 590 контрибьюторов в мастер, из которых 67 комитили и мержили в мастер за последний месяц.

3 Менторить — обучать, подсказывать, помогать начинающим во всём разобраться.

4 Великодушный пожизненный диктатор — термин придуманный случайно в день когда в майл-группе формировалась первая официальная Питон-организация и Гвидо ван Россуму не досталось никакой «нормальной» должности.

Когда-нибудь это всё-равно должно было произойти, в конце концов этот пресловутый автобус5 всегда таится где-то за углом, а я не становлюсь моложе. (Не буду утомлять списком всех своих проблем со здоровьем).


5 Имеется ввиду выражение «bus factor» — фактор автобуса, или фактор риска связанный с тем, что ключевая фигура предприятия или проекта может внезапно погибнуть или утратить дееспособность. Обычно указывает на недостаток распределённости в принятии решений и наличие чрезмерной концентрации власти или ответственности в руках одного человека.

Я не стану назначать себе преемника.

А что же теперь сделаете вы? Создадите демократию? Анархию? Диктатуру? Федерацию?

Я не переживаю за ежедневное принятие решений в баг-трекере6 на Гитхабе. Моё мнение там спрашивают очень редко, и обычно в нём нет особой нужды. Так что с этим, думаю, можно просто работать как обычно.


6 GitHub issues

Вопросы которые сейчас, наверное, важнее всего:


  • Как будут приниматься решения по PEP
  • Как будут приниматься новые люди в старшие разработчики

Может быть у нас получится эти процессы тоже оформить как PEP, может из этого даже получится нечто вроде конституции. Но вот в чём подвох, я оставляю вас всех (текущих комитеров) разбираться с этим самим, без меня.

Учтите, что остаются Правила7, если вам этот документ не нравится, вам остаётся только добровольно покинуть эту группу8. Возможно ещё придётся разобраться как кикать9 людей из этой группы, а также из python-dev и python-ideas, поскольку они тоже подчиняются Правилам.


7 Правила Питон-сообщества (CoC, Python Community Code of Conduct)
8 Имеется ввиду майл рассылка python-committers где это сообщение было опубликовано.
9 Кикать — исключать из любого онлайн сообщества, лишать членства.

И наконец. Напоминаю, что архивы этой группы публичны, хотя членство закрытое (писать могут только старшие разработчики).

Я буду здесь, но я предоставляю вам во всём разбираться самим. Я устал, мне нужен очень долгий перерыв.

Гвидо ван Россум (python.org/~guido)
12 июля 2018
Майл-рассылка python-committers

Ссылки:
Оригинал сообщения (англ.)
PEP 572 Assignment Expressions
Старший разработчик Питона (англ.)
Википедия: Великодушный пожизненный диктатор
История термина «Великодушный пожизненный диктатор» (англ.)
Правила сообщества (англ.)
Архивы группы комитеров питона (англ.)

Ван Россум, Гвидо — Википедия

Материал из Википедии — свободной энциклопедии

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 21 ноября 2018; проверки требуют 6 правок. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 21 ноября 2018; проверки требуют 6 правок.

Ван Россум, Гвидо (нидерл. Guido van Rossum) — нидерландский программист, прежде всего известный как автор языка программирования Python. Среди разработчиков Python Гвидо известен как «великодушный пожизненный диктатор» (BDFL) проекта[1], что означает, что он продолжает наблюдать за процессом разработки Python, принимая окончательные решения, когда это необходимо. С июля 2018 года Гвидо ушел в постоянный отпуск от диктаторства, оставив за собой право быть обычным разработчиком[2].

До разработки Python участвовал в проекте по написанию языка для обучения программированию — ABC. Лауреат «Free Software Award» 2001 года.

Сейчас работает в компании Dropbox Inc[3], покинув в декабре 2012 года корпорацию Google[4].

Ван Россум родился и вырос в Нидерландах, где он закончил Амстердамский университет по специальности «математика и информатика» в 1982 году. Затем он работал в различных исследовательских институтах, в том числе Голландском центре математики и информатики (Амстердам), Национальном Институте Стандартов (США) и Corporation for National Research Initiatives (США).

В 2001 году ван Россум получил премию Free Software Award, а в 2002 году — премию Нидерландской ассоциации профессионалов UNIX (NLUUG). В 2006 он был признан Ассоциацией вычислительной техники «выдающимся инженером».

В декабре 2005 года ван Россум был принят на работу в Google[5], где он разработал на Python веб-приложение для рецензирования кода Mondrian. Также принимал активное участие в разработке компанией Google сервиса хостинга сайтов и web-приложений Google App Engine. 7 декабря 2012 года был последним днём работы в Google[6]. C 1 января 2013 приступил к работе в Dropbox[3], где проработал до октября 2019 года и вышел на пенсию.[7]

12 июля 2018 года ван Россум объявил о своём намерении покинуть пост «великодушного пожизненного диктатора» (BDFL) проекта по разработке языка программирования Python [2].

Личная жизнь[править | править код]

Гвидо ван Россум — брат Юста ван Россума (нидерл. Just van Rossum), шрифтового дизайнера и программиста. Юст создал шрифт, который используется в логотипе «Python Powered».

В настоящее время Гвидо живёт в Калифорнии с женой-американкой Ким Нэп (Kim Knapp) и их сыном Орлейном (Orlijn)[8].

что нужно знать джуниору, чтобы работать и развиваться / Habr

Мы сделали сокращенную расшифровку с главными мыслями из Python Junior Podcast: в нем мы обсудили, с чего начинать и куда податься начинающему разработчику на Python. В последнее время у нас много контента для миддлов и сеньоров, но этот выпуск — точно для джунов.


Главные темы:

  • Какие знания нужны начинающему программисту, чтобы заниматься
    веб-разработкой?
  • Чего ждут работодатели от разработчиков?
  • Что делать, чтобы найти работу без опыта?
  • Как может развиваться Python-разработчик?

Python Junior Podcast — подкаст о программировании для тех, кто хочет лучше разбираться в Python. Эфиры ведут евангелисты сообщества MoscowPython и преподаватели курсов Learn Python.

В разговоре участвовали:

  • Валентин Домбровский,сооснователь MoscowPython
  • Злата Обуховская, тимлид NVIDIA
  • Григорий Петров, евангелист MoscowPython
  • Алексей Штырняев, разработчик в FinEx, преподаватель курсов Learn
    Python

Почему Python хорош для веб-разработки


Валентин Домбровский: Почему именно Python подходит для веб-разработки? Почему не PHP или JavaScript, например?

Григорий Петров: Так ведь выбора особо нет. Несмотря на то что в современном Вебе можно фактически без бэкенда — чисто на фронтенд-технологиях, на JavaScript — собрать себе single page application или progressive web application, все равно это слишком сложно, плохо индексируется и требует крутых разработчиков.

Если мы хотим сделать сайт или сервис, мы используем комбинированный подход: у нас какой-то бэкенд осуществляет логику и создает веб-страницы и какой-то фронтенд рисует эти веб-страницы в браузере. И когда нам надо быстро это все на чем-то собрать, то выбора особо нет.

Давайте рассмотрим возможные варианты.

  • C#. Microsoft действительно молодцы, они сделали .NET Core и всячески ее продвигают. Но, во-первых, это новая кроссплатформенная технология, и там еще не все гладко. Во-вторых, это действительно дорого, разработчиков C# мало — просто потому, что она непопулярна.
  • Java. Это сложно. Сделать нормальный сайт на Java — это не 10 строчек кода, как на Python. Это много кода, это фреймворки, и нужно знать специфику настройки Java-серверов. В общем, сплошные боль и страдания.
  • PHP. В последних версиях он замечательный. Я даже так скажу: PHP 7.2 не хуже Python. Но нельзя просто так взять и использовать PHP 7.2. Если обычный, не топовый разработчик делает сайт на PHP, он не будет писать только на 7.2: все равно придется читать какие-то учебники, туториалы, везде куча legacy-кода, и это не очень хорошо.
  • JavaScript и Node.js. Это замечательно и очень современно, когда один язык и на фронтенде, и на бэкенде. Только не очень стабильно. Node.js — хорошая штука, но проблематично развернуть ее в продакшене так, чтобы она не падала и работала устойчиво. Плюс, если мы хотим писать качественный код на JavaScript, нам нужен не JavaScript, а TypeScript. А вот TypeScript неожиданно сложный, при виде него у рядового разработчика вскипают мозги.

Давайте опустим Ruby, Haskell, Erlang и другие нишевые штуки, и у нас остается… Python. Язык с консистентным синтаксисом, единообразной стандартной библиотекой, лучшей документацией, популярными легкими фреймворками, мегапопулярным комбайном Django.
Получается, что, несмотря на широчайший выбор, если у нас обычные, не топовые разработчики, мы обычный бизнес, который хочет делать обычные сайты, у нас нет отдела разработки на 50 человек, то мы берем Python.

Какие знания нужны для входа в профессию


Злата Обуховская: Я считаю, что один фреймворк нужно знать хорошо — и знать, какие еще бывают и когда они используются. Где Tornado, где Django, где Flask, где aiohttp и так далее.
Пригодится знать, что есть такая штука, как протоколы. В частности, знание протокола http — центральное для построения веб-приложений.

Еще нужно хотя бы приблизительно представлять себе, как в веб-проектах устроен фронтенд: что есть HTML, CSS, JS.

Алексей Штырняев: И знать, где лежит документация. Это самое главное.

Григорий Петров: Тут мы ступаем на очень зыбкую почву. Если нам не повезло и мы начали как-то серьезно изучать современный фронтенд, то он будет примерно раз в 10 сложнее, чем бэкенд на Python. Начинающему разработчику нужно ограничить свой фокус так, чтобы начать изучать HTML, но чтобы не провалиться во все эти div, span, float, как там все выравнивается и выстраивается.

Алексей Штырняев: Нужен базовый курс по Bootstrap. И основы HTML.

В первый год не стоит углубляться в JS-фреймворки (если вы фокусируетесь на бэкенде). В базовом курсе по Bootstrap уже есть готовые модули: хочешь слайдер — делай слайдер, хочешь плавающее меню — сделай плавающее меню.
Злата Обуховская: Думаю, что за изучением фронтенда можно погрузиться, в частности, в то, как вообще статика отдается веб-приложениям. Так разработчик плавно переходит к тому, чтобы начать узнавать, как в принципе устроена архитектура веб-приложений и как они живут на продакшене.

Григорий Петров: Да, порекомендую сразу на тот случай, если вы выбрали Python в качестве языка бэкенд разработки и, например, Django в качестве фреймворка: у Django есть документация в Django Book, она реально клевая, в ней все то, о чем сказала Злата, она и правда хороша для начинающего.

Алексей Штырняев: Еще для быстрого старта подойдет какой-нибудь Django Girls, если цель — изучить именно Django. Это такой туториал, где за один день можно пройти по верхам, понять основы и то, на что способен фреймворк.

Валентин Домбровский: Готовясь к записи подкаста, мы составили список того, что нужно программисту на Python для веб-разработки, чем и резюмируем ранее сказанное.

Что входит в базис для веб-разработки на Python


  • Веб-фреймворки Django, Flask, aiohttp, Tornado и т. д. (и знать о существовании остальных).
  • Протоколы и API: в первую очередь http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM и миграции, реляционные базы данных, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Основы HTML, CSS, Bootstrap, а также JS-фреймворки и JQuery.
  • Принципы работы приложений на продакшене, тестирование, юнит-тесты, автотесты, системы контроля версий, git.

Нужны ли джуниору алгоритмы


Злата Обуховская: Поначалу не нужно знать алгоритмы, они сами постепенно появятся в голове, если заниматься разработкой достаточно долго. Я знаю кучу хороших инженеров, у которых не было хорошего формального курса алгоритмов.

Григорий Петров: Я хочу подлить масла в огонь. Вот откуда вообще берется наша тяга к алгоритмам?

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

Это пытаются делать, но тут у нас история Хогвартса: мы не можем сделать школу волшебников, пока у нас нет ни одного волшебника. Поэтому что делать университету, в который приходят и просят: «Начните обучать программистов», а программистов у них нет, потому что все работают в Mail.ru, Rambler и «Яндексе», им там хорошо?

В университете смотрят и говорят:
— О’кей, программирование. Давайте найдем какую-то смежную область знаний и пригласим специалистов оттуда. Давайте пригласим журналистов, которые умеют писать текст, инженеров-электриков, которые умеют делать электрические схемы, и математиков, которые умеют в алгоритмы.

В итоге получается, что это настолько же целесообразно, как обучать строителя физике элементарных частиц лишь потому, что кирпич и цемент состоят из элементарных частиц.

При этом про сам цемент и кирпич не рассказывают, потому что физик, который пытается обучить строителя, дома строить не умеет. В итоге получаем строителя, который в состоянии прекрасно расписать, как «работает цемент», но ни разу его не видел и делать из него ничего не умеет.

Алгоритмы и структуры данных — это очень хорошо, но это очень маленькая прикладная область. Они остро нужны, например, если ты пишешь игровой движок, компилятор, сетевой протокол.

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

Там самая сложная математика — это два раза сложить, а потом разделить. Там нужны совсем другие знания. Для решения бизнес-задач требуются в основном прикладные, а не фундаментальные знания.

Начинающему разработчику лучше иметь представление о бизнесе и о том, как правильно и быстро собирать из готовых блоков нужные конструкции, как их отлаживать, как делать так, чтобы они не разваливались, знать, почему они разваливаются, что происходит, когда меняются требования и программа начинает «оседать на фундаменте», как дом после дождя.
Вот эти прикладные штуки и понимание того, как писать софт. Ему надо знать, что кроме отладчика у него есть набор инструментов, который покажет, где именно программа тормозит.

Валентин Домбровский: Мне такое сравнение пришло на ум: это перевод с языка бизнеса на язык, на котором можно общаться с компьютером. То есть программист — эдакий специфический лингвист.

Григорий Петров: Бизнесу нужен писатель, а не лингвист. Писателю не нужно знать, почему тысячу лет назад это слово трансформировалось вот в то. Ему надо уметь применять эти слова.

Что нужно, чтобы найти первую работу разработчиком


Алексей Штырняев: Наверное, нет универсального рецепта, по которому нужно готовить джуниора.
Если вы приходите в какую-то компанию, вас возьмут не за то, что вы знаете Django, JSON и немного алгоритмов. Вас, скорее всего, возьмут за те скиллы, которые здесь и сейчас нужны этой компании.
Компаний много, и у всех разные требования. Нет такого универсального объема знаний, которые нужно получить, чтобы дальше подготовить резюме и идти трудоустраиваться.

Григорий Петров: Когда мы в VoxImplant искали нескольких джунов, наш технический директор сформулировал базовое требование так: человек должен уметь решать задачи. Понятно, что джун это будет делать не всегда эффективно, не лучшим способом и не всегда правильно, но в идеале ты ставишь человеку задачу, он напрягается и решает ее. Это тот скилл, который в первую очередь ищут работодатели.

Злата Обуховская: Люди, которые ищут работу, переходя из других областей, имеют с точки зрения бизнеса некоторое преимущество, потому что уже прошли какой-то путь и умеют решать задачи быстро. Это soft skills, я бы это назвала даже трудовой культурой. Зачастую у выпускников вузов эта трудовая культура еще не наработана.

Но мне бы хотелось все-таки попытаться дать какой-то рецепт начинающим.

Первые шаги для начинающего разработчика


Злата Обуховская: Первое — это все-таки какой-то свой проект, потому что в резюме нужно что-то написать, показать минимальное портфолио. Круче, когда эти проекты сделаны не для себя, а на фрилансе — для кого-то.

После первых проектов уже можно делать резюме и рассылать его во все компании, где есть джуновские позиции. Собеседования дадут понимание того, что нужно компаниям. Рано или поздно вас кто-нибудь возьмет, хотя бы в маленькую компанию. Впоследствии этот опыт работы даст вам возможность попасть в компанию побольше и поинтереснее.

Валентин Домбровский: Кстати, мы на курсах готовим учеников к тому, чтобы у них появился свой проект за 10 недель обучения. Плюс тренируем навык командной разработки. Это как раз те soft skills, о которых говорила Злата.

Алексей Штырняев: По опыту скажу, что первую работу можно искать очень долго. Когда вы ищете месяц-два — это нормально. Если вы подаете резюме во все компании, ходите на собеседования, на третий месяц вы обязательно что-то найдете.

Валентин Домбровский: Можно пилить свои проекты или брать простые проекты на фрилансе и параллельно заниматься рассылкой резюме.

Какие перспективы есть у Python-разработчика


Злата Обуховская: Python-разработчик может пойти куда угодно. Можно пойти в тестирование, продолжить развиваться до senior-архитектора. Или даже в менеджмент. Технические менеджеры бывают разные, и можно дорасти до топ-менеджмента. Можно развиваться в data science, DevOps, пойти в автотесты или machine learning.

Валентин Домбровский: В общем вариантов масса, возможностей тоже, в том числе наши курсы. Знаний на входе нужно не так много, но желательно потом охватить более широкий спектр, потому что чем больше вы сможете, тем лучше для вас.

***

Это лишь часть выпуска Python Junior. Полную версию эпизода можно послушать.

Или даже посмотреть:


RSS подкаста

Спасибо, что прочитали, послушали или посмотрели.

11 проектов, которые должен разработать каждый питонист

Уверены, что хорошо знаете Python? Проверьте, сможете ли вы разработать эти проекты на Python. Если нет − бегом читать наши туториалы.

Агрегатор контента

Контент помогает нам принимать решения − весь поток информации, публикуемый в блогах, соцсетях, на экране, является контентом. Единственный способ оставаться в курсе событий, не терять компетенцию − постоянно потреблять контента. Но поиск утомителен.

Для этого создают агрегаторы контента. Их суть в том, чтобы собирать разные, релевантные вам статьи, посты в соцсетях и собирать всё в одном месте.

Примеры реализации

Техническая реализация

Определитесь, с каких сайтов контент-агрегатор будет загружать информацию. Можно использовать библиотеки Requests для отправки HTTP-запросов, BeautifulSoup для анализа материалов и выделения наиболее подходящей информации.

Чтобы агрегация контента происходила в фоновом режиме, стоит обратить внимание на библиотеки Celery или Apscheduler.

А еще подумайте о базе данных, в которой будет храниться собранная информация.

Все мы читаем тексты. И когда у них плохая структура, нам не нравится. Из-за этого мы не всегда можем найти нужную информацию.

С помощью инструмента Regex Query Tool пользователи могут быстро проверить правильность своих строк регулярных выражений в интернете.

Было бы неплохо добавить функцию замены совпадений.

Примеры реализации

Техническая реализация

Такие проекты на Python нужны, чтобы сообщать пользователю, правильно ли он ввёл данные. Можно сделать так, чтобы сервис давал положительный или отрицательный ответ, вроде Query String Is Valid, выделяя положительный ответ зеленым цветом, а отрицательный − красным.

Реализовывать инструмент запросов с нуля необязательно. Можно обратиться к стандартной библиотеке Re. Она будет возвращать None при отсутствии совпадений или возвращать совпавшие строки.

Не все понимают, как работают регулярные выражения, поэтому стоит создать раздел с объяснением принципов их работы.

URL Shortener

URL-адреса бывают очень длинными, это неудобно. Когда люди делятся ссылками в мессенджерах или даже пытаются запомнить URL, неаккуратные ссылки раздражают.

Вот как это работает: URL Shortener уменьшает количество символов в URL. xyz.com/wwryb78&svnhkn%sghq?sfiyh может быть сокращено до xyz.com/piojwr.

Будет ещё круче , если вы позволите юзерам самостоятельно настраивать сгенерированные URL-адреса. URL xyz.com/mysite выглядит на порядок лучше, чем случайно сгенерированный xyz.com/piojwr.

А еще Google прекратил поддержку своего сервиса goo.gl, так что у вас есть шанс сделать свой продукт популярнее.

Примеры реализации

Техническая реализация

Основная задача, которую будет выполнять приложение, заключается в сокращении URL-адресов с последующей переадресацией на исходный URL-адрес.

В приложении пользователи будут вводить исходный URL-адрес и в результате получат новый сокращенный URL-адрес. Для этого стоит использовать комбинацию random и string.

Поскольку пользователи будут посещать сокращенные URL-адреса через несколько дней, месяцев или даже лет, вам необходимо сохранить сокращенные URL-адреса в базе данных. При поступлении запроса приложение проверит, существует ли URL-адрес, и перенаправит его на оригинал или страницу 404.

Post-It Note

Мы постоянно о чём-то думаем, а ещё постоянно забываем. Один из способов запомнить − записать, чтобы обдумать позднее.

Вживую люди пишут на стикерах, приклеивают их к своим компьютерам. Но такую задачу вполне мог бы выполнять онлайн-сервис, тем более что в отличие от живых записей информация в веб-приложении доступна в любой момент, а ещё её не потеряешь.

Было бы неплохо добавить напоминания о заметках, если вдруг пользователь забудет о них.

Примеры реализации

Техническая реализация

У каждого пользователя будут свои заметки, поэтому в приложении должна быть функция создания учетной записи. Это гарантирует приватность информации.

Django поставляется с системой аутентификации пользователя, так что это может быть одним из способов реализации идеи. Можно также использовать другие фреймворки, например, Bottle или Flask. Но вы должны самостоятельно внедрить систему аутентификации пользователей.

Юзерам может потребоваться разделить заметки по разным разделам: полезно реализовать классификацию. Например, кому-то могут понадобиться заметки об алгоритмах и структурах данных, поэтому нужно дать возможность быстро найти информацию по теме, а не листать веб-страницу.

Опять же, вам нужно где-то хранить поступающую информацию. Для MySQL можно использовать MySQLdb, а для PostgreSQL − Psycopg2.

Викторина

Викторины и тесты помогают проверить и углубить знания в разных областях. Например, вам не нужно знать о языке Python всё. Зато тестирование поможет узнать что-нибудь новое или разобраться в том, что вы не понимаете.

Администраторы будут выкладывать викторины и тесты, а простые пользователи проверять себя. Ещё лучше, если сделать ограниченное время на прохождение, рейтинг пользователей и возможность делиться результатами тестов с друзьями.

Примеры реализации

Техническая реализация

Чтобы пользователи могли сохранять результаты пройденных тестов, придется реализовать создание учетной записи.

В идеале, администраторы должны создавать тесты с вопросами и ответами, просто загружая текстовый файл. Тогда нужно настроить обработку текстового файла приложением, чтобы тест формировался автоматически.

Сигнализация

Идея в том, чтобы имитировать звук сигнализации при каком-либо условии. Этим условием может быть наступление какого-то времени или разрядка ноутбука до 10%.

Примеры реализации

Техническая реализация

В приложении должна быть возможность устанавливать и редактировать условия запуска сигнализации, возможность просмотреть активные и неактивные задания.

Для воспроизведения аудио можно использовать библиотеку Pygame.

Файловый менеджер

Для удобства есть файловые менеджеры, которые помогают упорядочить информацию.

Понятно, что управлять файлами можно с помощью командной строки, но для большинства это тяжело. Лучше, когда есть графический интерфейс. Важно, чтобы ваш файловый менеджер позволял копировать, сортировать и переименовывать файлы и папки.

Кстати, неплохо бы добавить разные варианты просмотра и сортировки файлов, поиск.

Примеры реализации

Техническая реализация

Для создания уникальных пользовательских интерфейсов стоит использовать библиотеку PySimpleGUI.

Стоит также подумать о реализации таких функций, как создание новых папок или пустых текстовых файлов, их перемещения.

При реализации проекта стоит обратить внимание на библиотеки Sys, OS и Shutil. Они позволяют выполнять процессы в фоновом режиме, пока пользователь занимается чем-то другим.

Контроль расходов

Каждый день мы совершаем по несколько платёжных операций. Если их не контролировать, можно не заметить, как деньги уходят впустую. Чтобы избежать ненужных трат, придумали приложения для отслеживания расходов.

Наиболее продвинутые из них не просто показывают список трат за определённы период, но и подсказывают, какие категории расходов стоит сократить.

Пользователи смогут устанавливать бюджет и отслеживать свои расходы, чтобы принимать более ответственные финансовые решения.

Было бы неплохо добавить напоминания о необходимости анализа расходов.

Примеры реализации

Техническая реализация

Для построения системы отслеживания расходов могут пригодиться Pandas и Matplotlib.

Pandas − для анализа данных, а Matplotlib − для построения графиков. Графики дают пользователям визуальное представление о своих расходах, а визуальное представление обычно легче понять.

Что касается хранения информации, то стоит обратиться к SQLite и её модулю SQlite3.

Контакты

Вы еще записываете контакты на бумагу? Странная затея: блокнот может потеряться, и его нужно носить с собой.

Лучше использовать приложения для управления контактами: они позволяют хранить имя, адрес, номер телефона и адрес электронной почты. Плюс в большом списке можно быстро найти нужный контакт с помощью поиска.

Можно попробовать сделать резервную копию такой базы контактов, чтобы она синхронизировалась с данными на телефоне.

Примеры реализации

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

Техническая реализация

Основная цель проекта − сохранить контактные данные. Важно настроить команды, которые пользователи могут использовать для ввода контактных данных. Вы можете использовать Argparse или Click командную строку базу. Они абстрагируют много сложных вещей, поэтому вам нужно сосредоточиться только на логике, которая будет выполняться при выполнении команд.

Значительную часть работы будут выполнять Argparse и Click. Вам остаётся только подумать о логике выполнения команд. Вам также нужно реализовать удаления контактов, обновление информации и вывод списка сохранённых. Идеально, если они будут сортироваться по алфавиту или дате создания.

Проверка подключения к сайту

При переходе по ссылке, веб-страницы загружаются не всегда. Но обычно непонятно, в чем проблема: недоступен сам сайт или проблема на вашей стороне.

Здесь на помощь приходит приложение для проверки подключения к сайту. Сервис анализирует статус URL-адреса и сообщает его. Так можно не обновлять страницу N раз в ожидании загрузки сайта.

Но! Если отображать результаты в командной строке, пользователю нужно будет обновлять её вручную. Лучше потратить больше времени и реализовать уведомления о появлении доступа к сайту.

Примеры реализации

Техническая реализация

Для подключений можно использовать TCP или ICMP. Один из модулей, которые нужно проверить − Socket.

Фреймворки Docopt, Click или Argparse позволят изменять список сайтов для проверки. Ещё подумайте о введении интервалов для проверки, чтобы не перегружать систему.

Изменение имени файлов

Иногда все файлы в папке должны называться примерно одинаково. Например, File0001.jpg, где номера увеличиваются в зависимости от количества файлов в каталоге. Делать это вручную утомительно.

Наш сервис позволит пользователям автоматически переименовать большое количество файлов и не допустить случайных ошибок.

Кстати, иногда нужно переименовать лишь часть файлов в папке. Хорошо, если такая функция тоже будет.

Примеры реализации

Техническая реализация

Для манипуляций с файлами пригодятся библиотеки OS, Sys и Shutil.

Чтобы сервис понял, по какой системе нужно менять названия файлов, дайте ему шаблон. Если вы понимаете, как работают регулярные выражения, воспользуйтесь модулем Regex.

Банальная задача − назвать файлы по списку или привести их в общий вид путем изменения MyfilesXYZ, где XYZ − число. Это должно быть базовой функцией, чтобы не усложнять пользователям жизнь.

Понравилось разрабатывать подобные проекты на Python? Вам понравится:

Источник: Проекты на Python, которые сможет разработать любой Middle Python Developer на Realpython.

А у вас есть свой проект на Python? Расскажите о нем.

А ты знал? 10 фактов о Python — «Хакер»

Содержание статьи

Python — язык программирования с достаточно низким порогом вхождения, поэтому его часто выбирают начинающие кодеры. Ты еще не решился изучать «Пайтон»? Вот десять фактов о нем, которые помогут тебе развеять сомнения и определиться с выбором. Они будут интересны не только программистам!

 

1. Python работает практически везде

Python работает почти на всех известных платформах — от карманных компьютеров и смартфонов до серверов сети. Версии Python портированы под Windows, Linux/UNIX, macOS и macOS X, iPhone OS 2.0 и выше, Palm OS, OS/2, AS/400 и даже OS/390, Windows Mobile, Symbian и Android.

Логотипы

 

2. У Python древние корни

Некоторые программисты считают этот язык программирования молодым. Как сказать. Если сравнивать с языком C, то Python — молодой. Но работа над ним началась в конце 1980-х годов, а первая полноценная версия появилась в 1991 году. Так что свое совершеннолетие Python уже давно отметил. Это зрелый и развивающийся язык программирования, но никак не мертвый — как считают некоторые. Кстати, месяц назад, 17 июля 2017 года, вышла версия 3.6.2.

 

3. Поддержка «больших парней»

«Большие парни» — Google, Yahoo, NASA, Industrial Light & Magic и даже Microsoft — используют Python. Подтверждение легко найти в интернете. Так, Google предпочитает C++, Java и Python, а Microsoft даже открыла Python Developer Center.

 

4. Python — один из самых популярных в мире языков программирования

В соответствии с индексом TIOBE, Python занимает пятое место в мире! Только посмотри на рейтинг популярности языков программирования. На первом месте — Java, далее — семейство языков C, C++, C#. Если эти языки считать как один, то Python — на третьем месте.

Индекс TIOBE

 

5. Название Python произошло не от рептилии

Создатель языка Гвидо ван Россум заявил, что название языка происходит от ТВ-шоу «Летающий цирк Монти Пайтона». Да, об этом написано в FAQ, но кто ж его читает!

 

6. Популярные продукты Yahoo написаны на Python

Популярные программные продукты Yahoo, в том числе Django, TurboGears и Zope, написаны на Python.

 

7. Python совместим с .NET и Java Virtual Machine

Разработчики могут интегрировать Python с объектами COM (Component Object Model), Microsoft .NET и CORBA (Common Object Request Broker Architecture). Для Java-разработчиков есть Jython — версия Python для JVM. Разработчики .NET могут воспользоваться Python for .NET или IronPython — реализацией Python для .NET от Microsoft.

 

8. «Батарейка» внутри

«Батарейкой» Python-разработчики называют стандартную библиотеку, в которой есть все — от асинхронной обработки до работы с ZIP-архивами. Именно поэтому на Python можно реализовать приложение любой сложности.

 

9. Python поддерживает ICE

ICE (Internet Communications Engine) — объектная система, использующая механизм RPC. ICE создана под влиянием технологии CORBA. Но при этом Ice намного компактнее и проще, чем CORBA. Python поддерживает обе технологии.

Технология ICE

 

10. Освоить Python проще, чем ты думаешь

Python — довольно простой в изучении язык программирования. Обучение программированию сейчас нередко рекомендуют начинать именно с него, и вполне вероятно, что когда-нибудь он займет и ту почетную нишу, которую когда-то занимал Turbo Pascal :). Можно приобрести хорошую книгу, а можно обратиться к профессионалам: освоить новую профессию и получить стопроцентное трудоустройство. Изучить Python и превратиться в Python-разработчика всего за один год помогут в GeekUniversity.

Список технологий, которые освоит выпускник

Преимущества получения специальности в GeekUniversity следующие.

  • Используются подходы ведущих учебных центров США. Студенту предстоит создать четыре проекта — как самостоятельно, так и в команде. Год в GeekUniversity — это год реального опыта разработки для резюме.
  • На уроках будет создано не простое приложение вроде «Привет, мир», а полноценное клиент-серверное приложение — платежная система. Студент научится работать с БД, создавать приложения с GUI и безопасные многопоточные приложения.
  • У студента будет личный наставник-куратор. Работа с наставником делает обучение эффективнее.
  • Цель GeekUniversity — трудоустройство выпускника. Трудоустройство гарантируется всем выпускникам.
  • GeekUniversity работает на основании государственной лицензии № 038188. Выпускнику выдается свидетельство государственного образца.
Свидетельство государственного образца

Получить дополнительную информацию об онлайн-университете можно, оставив заявку на сайте GeekUniversity.

Книга «Как устроен Python. Гид для разработчиков, программистов и интересующихся»

Привет Хаброжители! У нас недавно вышла новая книга про «Python». Предлагаем сразу ознакомится с ознакомительным материалом.

Отрывок. 7.4. Использование IDLE


Так как IDLE включает REPL, вы можете ввести приведенный код и проанализировать его прямо в REPL. Однако вы также можете написать код, запустить его и проанализировать из REPL. Чтобы опробовать эту возможность, откройте новый файл и включите в него следующий код:
name = "Matt"
first = name
age = 1000
print(id(age))
age = age + 1
print(id(age))
names = []
print(id(names))
names.append("Fred")
print(id(names))

Сохраните код в файле с именем iden.py. Запустите файл. В IDLE для этого следует нажать клавишу F5. В REPL будут выведены четыре числа. Первые два будут разными; это говорит о том, что целое число является неизменяемым. Последние два числа совпадают. Это объясняется тем, что несмотря на изменение списка names идентификатор остался прежним. В общем-то в этом факте нет ничего принципиально нового.

Теперь самое интересное: если ввести в REPL команду dir(), она выведет список переменных. Вы увидите, что глобальные переменные из iden.py теперь стали доступны.

REPL в IDLE открывает доступ ко всем глобальным переменным. Вы можете просмотреть name и names и даже вызывать функции или методы — например, names.append(«George»).

Имея возможность изучить результаты только что выполненного кода, вы можете быстро проанализировать код и поэкспериментировать с ним. Опытные разработчики Python нередко пишут код в REPL, вставляют его в файл, снова запускают файл, пишут новый код в REPL и продолжают писать код таким способом.




Отрывок. 22. Субклассирование


Помимо группировки состояния и операций, классы также обеспечивают повторное использование кода. Если у вас уже имеется класс, а вам нужен другой класс, слегка отличающийся от него поведением, один из способов повторного использования заключается в субклассировании. Класс, от которого производится субклассирование, называется суперклассом (другое распространенное название суперкласса — родительский класс).

Предположим, вы хотите создать кресло, способное вмещать шесть лыжников. Чтобы создать класс Chair6, моделирующий кресло для шести человек, — более специализированную версию Chair, можно воспользоваться субклассированием. Субклассы позволяют программисту наследовать методы родительских классов и переопределять методы, которые нужно изменить.

Ниже приведен класс Chair6, который является субклассом CorrectChair:

>>> class Chair6(CorrectChair):
... max_occupants = 6

Обратите внимание: родительский класс CorrectChair заключается в круглые скобки после имени класса. Заметим, что Chair6 не определяет конструктор в своем теле, однако вы можете создавать экземпляры класса:
>>> sixer = Chair6(76)

Как Python создает объект, если в классе не определен конструктор? Вот что происходит: когда Python ищет метод .__init__, поиск начинается с Chair6. Так как класс Chair6 содержит только атрибут max_occupants, Python не найдет здесь метод .__init__. Но поскольку Chair6 является субклассом CorrectChair, он обладает атрибутом __bases__ с перечислением базовых классов, сведенных в кортеж:
>>> Chair6.__bases__
(__main__.CorrectChair,)

Затем Python ищет конструктор в базовых классах. Он находит конструктор в CorrectChair и использует его для создания нового класса.

Такой же поиск происходит при вызове .load для экземпляра. У экземпляра нет атрибута, соответствующего имени метода, поэтому Python проверяет класс экземпляра. В Chair6 тоже нет метода .load, поэтому Python ищет атрибут в базовом классе CorrectChair. Здесь метод .load вызывается со слишком большим значением, что приводит к ошибке ValueError:

>>> sixer.load(7)
Traceback (most recent call last):
   File "/tmp/chair.py", line 30, in <module>
     sixer.load(7)
   File "/tmp/chair.py", line 13, in load
     new_val = self._check(self.count + number)
   File "/tmp/chair.py", line 23, in _check
     number))
ValueError: Invalid count:7

Python находит метод в базовом классе, но вызов метода ._check приводит к ошибке ValueError.

22.1. Подсчет остановок


Иногда лыжнику не удается нормально сесть на подъемник. В таких случаях оператор замедляет движение или останавливает подъемник, чтобы помочь лыжнику. Мы можем воспользоваться Python для создания нового класса, который будет подсчитывать количество таких остановок.

Предположим, при каждом вызове .load должна вызываться функция, которая возвращает логический признак того, произошла остановка или нет. В параметрах функции передается количество лыжников и объект кресла.

Ниже приведен класс, который получает функцию is_stalled в конструкторе. Эта функция будет вызываться при каждом вызове .load:

>>> class StallChair(CorrectChair):
...          def __init__(self, id, is_stalled):
...               super().__init__(id)
...               self.is_stalled = is_stalled
...               self.stalls = 0
...
...          def load(self, number):
...                if self.is_stalled(number, self):
...                    self.stalls += 1
...                super().load(number)

Чтобы создать экземпляр этого класса, необходимо предоставить функцию is_stalled. Следующая простая функция генерирует остановки в 10 % случаев:
>>> import random
>>> def ten_percent(number, chair):
...           """Return True 10% of time"""
...           return random.random() < .1

Теперь можно создать экземпляр, указав функцию ten_percent в качестве параметра is_stalled:
>>> stall42 = StallChair(42, ten_percent)

22.2. super


Напомним, что StallChair определяет свой собственный метод .__init__, который вызывается при создании экземпляра. Обратите внимание: первая строка конструктора выглядит так:
super().__init__(id)

При вызове super внутри метода вы получаете доступ к правильному родительскому классу.

Строка в конструкторе позволяет вызвать конструктор CorrectChair. Вместо того чтобы повторять логику назначения атрибутов id и count, вы можете использовать логику из родительского класса. Так как StallChair имеет дополнительные атрибуты, которые нужно задать для экземпляра, это можно сделать после вызова родительского конструктора.


Метод .load тоже содержит вызов super:
def load(self, number):
      if self.is_stalled(number, self):
          self.stalls += 1
      super().load(number)

В методе .load вы вызываете функцию is_stalled, чтобы определить, останавливался ли подъемник, после чего передаете управление исходной функциональности .load из CorrectChair при помощи super.

Размещение общего кода в одном месте (в базовом классе) сокращает количество ошибок и дублирований кода.

Об авторе


Мэтт Харрисон использует Python с 2000 года. Он руководит компанией MetaSnake, занимающейся консультационными услугами и проведением корпоративного обучения в области Python и теории анализа данных. В прошлом он работал в областях научных исследований, управления сборкой и тестированием, бизнес-аналитики и хранения данных.

Он выступал с презентациями и учебными лекциями на таких конференциях, как Strata, SciPy, SCALE, PyCON и OSCON, а также на локальных пользовательских конференциях. Структура и материал этой книги основаны на его практическом опыте преподавания Python. Мэтт периодически публикует в «Твиттере» полезную информацию, относящуюся к Python (@__mharrison__).

Научные редакторы


Роджер Э. Дэвидсон (Roger A. Davidson) в настоящее время является деканом факультета математики в колледже Америкэн Ривер (Сакраменто, штат Калифорния). Его докторская диссертация была написана на тему авиационно-космической техники, но он также является обладателем дипломов об образовании в области computer science, электротехники и системотехники, а также недавно получил сертификат в области data science (с чего и началось его увлечение Python). На протяжении своей карьеры Роджер работал в NASA, в компаниях из списка Fortune 50, в стартапах и муниципальных колледжах. Он с энтузиазмом относится к образованию, науке (не только к обработке данных), пирогам с ежевикой и руководству неоднородными коллективами при решении больших задач.

Эндрю Маклафлин (AndrewMcLaughlin) — программист и проектировщик, системный администратор в первую половину дня и семьянин во вторую. Из-за своего внимания к деталям занимается веб-программированием с 1998 года. Обладатель диплома с отличием университета Джорджа Фокса, Эндрю получил степень в области систем управления и информации. В свободное время он ходит в турпоходы со своей женой и двумя детьми, а также иногда работает в столярной мастерской (все пальцы пока на месте). Читайте его публикации в «Твиттере»: @amclaughlin.

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 20% по купону — Python.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *