Создатель python: Персона. Гвидо Ван Россум — создатель Python / Хабр

Содержание

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

Гвидо ван Россум известен как создатель языка 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 — всё дело в идеальном выбритом подбородке Ларри Уолла.

как побочный проект одного разработчика стал популярнейшим языком программирования / Хабр

Разочаровавшись в недостатках существовавших языков программирования, Гвидо Ван Россум создал язык Python. Сейчас этот язык используют миллионы людей, и Ник Хит беседует с ван Россумом о прошлом и будущем языка.

Гвидо Ван Россум в штаб-квартире Dropbox в 2014 году

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

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

«Особенно мне запомнился один человек, сказавший: ’Не говорите никому, что я здесь, потому что то, что мы используем питон, является конкурентным преимуществом’. Это было их секретное оружие».


Даже на этой ранней встрече в бюро государственных стандартов США в Мэриленде, как говорит Уорсо, было очевидно, что питон предлагает нечто новое в вопросе лёгкого написания кода и простого достижения результата.

«Когда мне впервые показали питон, я знал, что это нечто особенное. Это было сочетание читаемости и радости от написания кода на питоне», — вспоминает он.

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

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

Питон играет главную роль в некоторых из самых известных организаций мира: помогает Netflix отправлять потоковое видео в более чем 100 млн домов по всему миру, лежит в основе феномена фотообменника Instagram и помогает НАСА исследовать космос.

Ранние годы питона

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

Этот язык программирования появился, как сторонний проект программиста из Нидерландов Гвидо Ван Россума. В конце 1980-х ван Россум работал над распределённой системой в Centrum Wiskunde & Informatica (CWI), нидерландском государственном исследовательском центре математики и информатики. Разочаровавшись недостатками существующих языков программирования, он решил сделать новый – такой, который было бы легко использовать, но при этом обладающий большими возможностями.

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

Также важно понять, насколько сложно было сделать что-либо при помощи ограниченных возможностей доступных ван Россуму в то время языков программирования. Распределённая вычислительная система Amoeba, с которой он работал, требовала от него использования С или командной строки Unix – у обоих вариантов были серьёзные ограничения. С требовал от разработчиков не только борьбы со сложностями ручного управления памятью и навигации по минному полю возможных ошибок – в нём не было библиотеки кода для повседневных задач разработчика, которую можно было бы использовать многократно, из-за чего разработчикам с каждым новым проектом приходилось заново изобретать велосипед. А у командной строки Unix были свои проблемы – там было большое разнообразие инструментов для распространённых задач, но она работала так медленно, что не справлялась со сложной логикой.

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

«Я, в общем-то, подумал: ’Ну а почему бы мне не создать свой собственный язык’, украв идеи у ABC, но уменьшив размер проекта от того, что мы делали три года, до того, что я сам бы смог сделать за три месяца, и вот так родился питон», — говорит он. Ван Россум по-настоящему начал работать над этим в конце 1989 года, а имя позаимствовал у любимой комедийной труппы «Летающий цирк Монти Пайтона» – ассоциация со змеями и логотип с завязанным питоном появились позже – и работал над проектом по возможности.

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

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

«Не знаю, насколько серьёзно я верил в то, что это сделает меня более продуктивным. Думаю, что я частью просто наслаждался идеей того, чтобы начать свой проект, писать такой код, который мне хотелось, и разрабатывать его так, как я хотел. Мне нравится программировать», — говорит он.

И если для обычного человека идея создания собственного ЯП может показаться необычной, у ван Россума была неплохая компания. В конце 1980-х из-за разочарования в возможностях существующих инструментов появилось множество новых, обретших популярность языков. Знаменитое высказывание Ларри Уолла гласит, что его побудила создать язык Perl сложность решения задач, а также обилие «лени, нетерпения и высокомерия». Поиски лучшего языка для создания интерактивных инструментов проектирования интегральных схем побудили Джона Остерхаута создать Tcl.

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

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

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

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

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

«Помню в 1985 году я впервые посетил США, поехав в отпуск с магнитной лентой в рюкзаке», — говорит ван Россум.

Гвидо ван Россум в 2001 году, когда был основан Python Software Foundation

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

«Неудивительно, что у нас не получилось активно распространить ABC, несмотря на все его чудесные качества», — говорит он. Но интернет-революция набирала обороты, и распространять питон было уже гораздо проще – чемодан с плёнками уже не требовался.

Ван Россум выпустил питона в мир через новостную группу alt.sources в 1991 году, практически на условиях лицензии с открытым кодом – хотя такое понятие появится только через шесть лет. И хотя интерпретатор питона приходилось скачивать с сети Usenet в виде 21-й части, которые потом нужно было собрать в один файл и разархивировать, этот механизм доставки всё равно был куда как более эффективным, чем развоз физических копий, предпринятый за несколько лет до этого.

«Я надеялся на какой-то успех, но у меня уже был опыт выпуска другого проекта, который в итоге обернулся фиаско», — говорит он.

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

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

Почему питон победил

После того, как язык начал набирать обороты в начале и середине 1990-х, у ван Россума появилось ощущение, что питон оказался языком, чьё время пришло.

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

Уорсо говорит, что питон достиг баланса в удобстве использования, не принося в жертву возможности – существовавшие в начале 1990-х языки такого предложить не могли. «Я много программировал на Perl, Tcl и C, и это было не очень интересно. Потом на сцену вышел питон, и я подумал: ’Ого, вот теперь программировать снова интересно’», — говорит он.

Барри Уорсо на первой рабочей встрече пользователей питона в 1994

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

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

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

Кроме читаемости, говорит Райан, питон почти сразу предлагал встроенную функциональность, отличавшую его от других языков. «Там была такая функциональность, как классы и обработка исключений. Питон также поддерживал такие функции, как lambda, map и filter, оказавшиеся очень полезными во многих случаях», — говорит он.

Питон мог бы и не появиться, если бы популярные ЯП в 1980-х были бы лучшего качества. Одной из мотиваций ван Россума к созданию питона стала несовместимость скриптового языка Perl и распределённой вычислительной системы Amoeba, над которой он работал в CWI. «Питону повезло с тем, что Perl невозможно было портировать на Amoeba, — говорит он. – Если бы Perl удалось портировать на Amoeba, я бы никогда не задумался о создании собственного языка».

Хотя питон создал после выхода базу истинных приверженцев, в 1990-х он был аутсайдером среди ЯП. Ван Россум говорит, что за первое место соревновались Tcl/Tk и Perl, и у обоих из них была такая же цель, как у питона – простота использования и богатые возможности.

«В 90-х в первой тройке ЯП определённо первое место занимал Perl – он был чем-то вроде 400-килограммовой гориллы – затем шёл Tcl/Tk, а питон занимал скромное третье место», — говорит он.

Сегодня питон растёт быстрее всех остальных ЯП, если считать по активным разработчикам – так следует из ежегодного опроса разработчиков Stack Overflow, одного из наиболее всеобъемлющих обзоров ЯП – а Perl сжался до такого состояния, что его уже не упомянули в последнем отчёте.

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

Так как же питон победил своего давнего соперника, и как объяснить настолько сильно различающиеся судьбы двух ЯП? Ван Россум считает, что в частности это произошло из-за того, насколько легко поддерживать базу кода, когда она выходит за определённые рамки. «Люди считали, что Perl идеально подходил для написания скриптов в 10 строчек, — говорит он. – Но когда у вас есть 500 строк основного кода и несколько тысяч строк в библиотеках, требуется огромная дисциплина для того, чтобы код можно было поддерживать и далее. В питоне при этом, даже если у вас нет такой дисциплины, код будет достаточно легко читать и поддерживать».

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

«В интернете было несколько разработчиков – большая часть этой истории относится к ранним этапам развития интернета – которым нужно было писать всё более и более крупные приложения, и которым нравилось, что в питоне на это можно потратить гораздо меньше усилий, чем если использовать C, C++ или Java».

С ростом популярности питона в 1990-х ван Россум, всё ещё работавший в CWI, обнаружил, что его детище всё больше связывает его с людьми со всего мира. «Я сделал нечто, и оно связывало меня с людьми со всего мира – людьми из Австралии, из США, из других европейских стран. Мне это безумно нравилось», — говорит он.

Питон и веб

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

«Одной из больших областей использования языка была веб-разработка, которая также очень сильно интересовала и меня лично, — говорит ван Россум, и добавляет, что питон начали использовать для создания бэкенд-скриптов на веб-серверах вместе с Perl и скриптами командной строки. – Можно было создавать динамические веб-страницы, и это стало одним из моих любимых применений питона».

Райан из Gartner говорит, что популярность питона среди разработчиков 1990-х закрепило то, что он стал любимым выбором для быстрого создания мощных скриптов. «То, что это был скриптовый язык с обширной функциональностью, снизило барьер вхождения для многих пользователей», — говорит он.

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

К 1994 году питон привлёк внимание Майкла Маклэя, одного из руководителей в государственном бюро стандартов США (NBS), которое сегодня преобразовалось в государственный институт стандартов и технологий (NIST). Предвосхитив любовь к питону исследователей и учёных за простоту его использования, Маклэй заинтересовался тем, смогут ли использовать питон учёные из NBS, у которых, как говорит ван Россум, «были собраны значительные объёмы данных, но не было хороших программистов».

Чтобы помочь продать идею использования питона другим членам бюро, Маклэй пригласил ван Россума, который тогда ещё работал в CWI в Нидерландах, чтобы пару месяцев поработать в NIST в качестве приглашённого исследователя. Это стало катализатором будущей эволюции питона и серьёзно изменило жизнь ван Россума.

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

Ван Россум на первой рабочей встрече пользователей питона, вместе с Уорсо и Роджером Массе, в то время работавшим вместе с Уорсо в CNRI.

В офисах NBS ван Россум познакомился с Бобом Каном, известным своей ролью в разработке одной из основных технологий интернета, протокола TCP/IP.

На встрече ван Россуму предложили поработать с Каном в корпорации государственных исследовательских инициатив (CNRI), некоммерческой исследовательской группе из Виргинии, занимавшейся стратегической разработкой сетевых технологий.

Как питон откликнулся на необходимость в новом типе ЯП, так и предложение о работе, по словам ван Россума, поступило как раз в тот момент, когда он задавался вопросами о своём будущем в CWI.

«CWI был более академической организацией, они постоянно давили на меня, чтобы я либо защитил докторскую, либо нашёл работу где-то ещё», — говорит он.

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

Именно в CNRI ван Россум скомпоновал многие структуры, необходимые для управления ЯП питон, при помощи команды из таких же энтузиастов языка. Устроившись в CNRI в апреле 1995 года, ван Россум стал руководить небольшой командой разработчиков, работавших над ПО Knowbot Programs, мобильными агентами, разработанными для запуска на распределённых компьютерных системах типа интернета.

Команда работала на языке питон, и к ван Россуму присоединились Джереми Хилтон, Роджер Массе, Барри Уорсо, Кен Мангеймер и Фред Дрейк – все они позже сыграют важные роли в питон-сообществе.

«У нас получилась группа из 4-10 человек, большая часть которых работала в CNRI, и они стали ядром разработки питона», — говорит ван Россум.

Пока ван Россум работал в CNRI, эта команда помогла ему сделать сайт python.org, CVS-сервер для управления изменениями базы кода, и список рассылки для Python Special Interest Groups – групп, работавших над улучшением и поддержкой ЯП питон.

Сообщество пользователей питона с момента его выхода в 1991 году сильно выросло, и во второй половине десятилетия этот язык привлёк значительную базу пользователей со всего мира. В этот период началась формализация управления языком, разработчики основали предшественника Python Software Foundation (PSF), которая появится в 2001. С ростом сообщества проходившие два раза в год рабочие встречи по языку, начавшиеся в 1994 году, превратились в более крупные ежегодные мероприятия, а в итоге – в ежегодный PyCon от PSF, который проводится и по сей день.

К началу XXI века язык перерос возможности любого отдельного человека, крупное сообщество играло активную роль в разработке языка – долгий путь был пройден с лета 1994 года, когда ранние пользователи языка беспокоились, что с ним случится, «если Гвидо собьёт автобус».

Но ван Россум продолжал играть ключевую роль, и не перестал оставаться ядром языка – это очевидно из шутливого прозвища «великодушного пожизненного диктатора» (BDFL), существующего уже много лет.

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

Райан из Gartner говорит, что нет ничего необычного в том, чтобы создатель языка оставался его распорядителем, как Ларри Уолл с Perl и Райан Дал с Node.js, однако он уточняет, что ван Россум известен своей объективностью в управлении питоном. «Что касается направления развития проекта и управления им, все признают его очень сбалансированным», — говорит он.

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

Эволюция питона

В промежуточных годах питон совершил гигантские шаги, в 2008 году был представлен модернизированный Python 3.0, а в последнее время в управлении языком наметились серьёзные изменения. Они начались в прошлом году, когда ван Россум уступил лидирующую роль на посту BDFL, после того, как сообщество разделило предложение ввести в язык присвоения в выражениях, обсуждение которых было сделано в заявке Python Enhancement Proposal PEP572.

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

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

«Меня разочаровало то, как не согласные с предложением по техническим причинам люди уходили в соцсети и начинали разглагольствовать о том, что процесс принятия решений сломан, или что я делаю серьёзную ошибку. Было такое ощущение, будто меня атакуют со спины», — говорит он.

«В прошлом всегда было ясно, что если в языке нужно было сделать изменение или улучшить какую-то возможность, то куча ключевых разработчиков соберутся и обсудят преимущества и недостатки нововведения. И тогда либо вырабатывался явный консенсус, либо всё было не так ясно, и тогда я обдумывал это предложение, и выносил решение. А с PEP572, хотя предложение и было спорным, я решил, что хочу его утвердить, и люди не согласились договориться о том, что мы не договорились. Это был не то, чтобы бунт, но мне показалось, что у меня нет доверия со стороны достаточного числа ключевых разработчиков, чтобы продолжать работу».

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

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

Ранее в этом году ключевые разработчики питона – поддерживающие и обновляющие интерпретатор CPython – выбрали управляющий совет, который должен планировать будущее языка. Туда вошли ван Россум, Уорсо и их коллеги Бретт Кэннон, Кэрол Уиллинг и Ник Коглан. Уорсо говорит, что это изменение было необходимым, чтобы управлять языком с настолько быстро растущей базой пользователей.

«Думаю, Гвидо реально казалось, что он держит на своих плечах весь мир в одиночку, — говорит он. – Это прокатывало 25 лет назад, когда сообщество питона было гораздо меньше, и язык был меньше, но сегодня это слишком много для одного человека, понимаете? Думаю, что чисто для здоровья и возможности участвовать в действиях сообщества, хорошо было распределить эту нагрузку на пятерых», — говорит Уорсо.

Новые выборы в управляющий совет будут проходить после каждого выхода новой версии питона, что, по словам Уорсо, проложит путь следующему поколению лидеров. «Если питон будет жив через 25 лет, то им уже будем управлять не мы с Гвидо, понимаете?» – говорит он.

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

Один из ключевых разработчиков, Мариатта Виджайа

Будущее питона

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

На встрече пользователей ЯП питон в этом году сооснователь BeeWare Рассел Кит-Мэги предупредил всех, что питон столкнётся с «экзистенциальным риском», если не улучшит поддержку мобильных и новых веб-платформ. «Телефоны и планшеты так сильно проникают на рынок, что настольным компьютерам и ноутбукам такого и не снилось, и при этом у сообщества нет идей по поводу того, как можно использовать питон на этих устройствах, — сказал он, указывая на то, что его сын использует iPad в школе. – Что будет с питоном, когда ноутбуки окажутся нишевыми устройствами?»

Кит-Мэги, чей проект BeeWare нацелен на то, чтобы единожды написанную на питоне программу можно было запускать где угодно, выкатил список проблем, которые сейчас есть у питона в области поддержки платформ, отличных от стандартных ПК x86.

Он указал на следующие недостатки: необходимость улучшения поддержки компилируемого кода для новых платформ, не совместимых с x86; набор тестов питона падает на мобильных и веб-платформах; установочный размер питон-приложений раздут и его нельзя урезать до небольшого подмножества зависимостей; необходимость потратить усилия на доработку библиотеки asyncio для работы с GUI под Android, Windows и в вебе; количество модулей в стандартной библиотеке, несовместимых с интерпретаторами питона, отличными от CPython.

Уорсо говорит, что Кит-Мэги говорит правильные вещи, и считает важным вопросы, связанные с обновлением питона для новых платформ – телефонов, планшетов, новых веб технологий типа WebAssembly.

«Пока что питон ничего хорошего предложить не может, — говорит Уорсо насчёт мечты о возможности скачать приложение для iPhone или Android, и „даже не узнать, что оно написано на питоне“.

С ростом количества ядер процессора в современных чипах (до 48 ядер в последних серверных процессорах от Intel) Уорсо также с нетерпением ждёт, когда питон лучше научится распределять задачи по нескольким ядрам.

Ему очень интересен потенциал работы Эрика Сноу над субинтерпретаторами и тем, как они могут расширить возможности питона по одновременной работе процессов. „Мне бы очень хотелось увидеть больше работы по поводу использования всех преимуществ многоядерных систем“, — говорит он.

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

»Для Python 3.8 он ещё не успеет подготовиться, возможно, это будет в версии 3.9, — говорит Уорсо. – Думаю, мы увидим это в ближайшие два-два с половиной года. Я настроен оптимистично. Очень рад, что Эрик продолжает работать над этим, поскольку считаю это важным».

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

Питон-сообщество также предпринимает шаги к модернизации стандартной библиотеки языка со встроенным кодом, и недавно опубликовало предложение об удалении устаревших модулей из неё; это ответ на недавнюю критику о состоянии стандартной библиотеки питона. Она обычно считается одной из сильных сторон языка, её можно использовать для решения широкого спектра обычных задач, поэтому часто говорят, что у питона «батарейки в комплекте». Однако на встрече питон-разработчиков в этом году был задан вопрос, не лучше ли позволить людям выбирать библиотеки из репозитория PyPI, вместо того, чтобы поставлять всю эту функциональность вместе с языком в качестве стандартной библиотеки.

Также были вопросы о том, не сможет ли группа лиц, руководящих разработкой языка – ключевые разработчики и управляющий совет – лучше отражать разнообразную базу пользователей питона в 2019 году. «Мне бы хотелось увидеть лучшее отображение для разнообразных метрик, не только в плане гендерного баланса, но и по расам, и по всему остальному», — говорит Виджайа.

«Я говорил на PyCon с девушками из группы PyLadies, из Индии и Африки. Они сказали: ’Когда люди слышат про питон или PyLadies, они представляют себе людей из Северной Америки или Канады, а на самом же деле в других частях света тоже имеется обширная база пользователей. Почему их видно так редко?’ И это мне кажется разумным. Поэтому я бы хотел увидеть такое, и думаю, что мы все должны принять в этом участие».

В итоге, несмотря на шутливую идею с заведующим всеми вопросами «великодушным диктатором», в последние годы все идеи, изменявшие питон, появились за счёт сообщества, говорит Уорсо, благодаря людям, использующим питон по максимуму, и открывающим двери для новых пользователей. «Реально всё происходит снизу вверх, со стороны сообщества, а не наоборот», — говорит он.

В качестве примера того, как простые проекты сообщества могут серьёзно влиять на питон, можно привести Type Hints – особенность Python 3.5, вдохновлённая проектом mypy, запущенным аспирантом в 2012 году. Эти «намёки» позволяют проводить необязательную проверку типов, что позволяет разработчикам отлавливать ошибки особого типа, которые иначе могли бы ускользнуть от них.

В этом году питон помог собрать из кусочков первое изображение чёрной дыры

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

«Тот факт, что это позволяет питону масштабироваться для нужд более крупных компаний – таких, как Instagram, который, по сути, работает на базе Python 3 – для меня просто бесценен», — говорит Уорсо, упоминающий asyncio как ещё один пример идеи, поданной сообществом, которая может серьёзно повлиять на возможности языка.

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

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

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

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

Что должен знать Python разработчик в 2020 году.

Добрый день, дорогие читатели блога ITVDN! Предлагаем вашему вниманию новую публикацию в рубрике “Что должен знать разработчик…”, в которой мы пишем о самых популярных IT-профессиях. Ранее уже были опубликованы обзоры по FrontEnd и .NET. В этот раз в центре внимания язык Python. В каких сферах он успешно применяется, а в каких буквально незаменим? Какими знаниями нужно обладать, чтобы стать, к примеру, Python BackEnd разработчиком? Все это вы узнаете в нашей статье. Приятного чтения!

 

В последние годы язык программирования Python стремительно набирает популярность. По данным Stack Overflow Developer Survey 2019, в котором приняли участие более 87 тысяч IT специалистов из разных стран, Python в 2019 году опередил даже таких постоянных и несомненных лидеров как Java, С# и С++. Сейчас он широко используется в Data Science (машинное обучение, анализ данных, визуализация), разработке встроенного программного обеспечения и в реализации серверной части веб-приложений. Также при помощи Python можно создавать игры, десктопные и мобильные приложения, писать тесты для ПО, а также упрощать администрирование ОС.

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

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

 

Python

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

  1. Синтаксис языка Python: типы данных, строки и символы, операции с целыми и вещественными числами, отступы, условные и циклические конструкции, функции, списки, словари, классы, файловый ввод-вывод, логические операции и операции сравнения.
  2. Популярные библиотеки и фреймворки. Этот пункт зависит от выбранного IT-направления. К примеру, если вы планируете себя реализовать в веб-разработке, отличным выбором станет библиотека Requests, которая облегчит процессы составления HTTP-запросов, также будут полезны фреймворки Django и Flask. Если же вас увлекает машинное обучение, то Theano, TensorFlow, Keras и другие библиотеки помогут с построением и тренировкой нейронных сетей.
  3. IDE и редактор кода. Проекты лучше создавать в интегрированной среде разработки (IDE) или в редакторе кода. Это позволяет сделать написание кода максимально удобным: подсветка синтаксиса, автодополнение, инструменты сборки, возможность отладки код и прочее. Самыми популярными платформами являются PyCharm, WingWare IDE, Komodo.

Открытым остается и вопрос, какую версию Python стоит изучать: 2.x либо 3.х? Согласно информации из официального источника разработчиков python.org, в 2020 году прекращается поддержка Python 2.7. Соответственно, стоит сконцентрировать усилия на изучении именно версии 3.х.

Разработчик должен иметь глубокие знания языка Python, понимать и уметь применять на практике принципы объектно-ориентированного программирования (ООП).

 

 Английский язык

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

 

Git & GitHub

Git — наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии.

Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах.

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

 

Алгоритмы и структуры данных

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

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

Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач.

 

Методологии разработки Agile/Scrum

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

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

Scrum является одной из реализаций agile-подхода. Его используют многие команды, поэтому знание особенностей работы со scrum-моделью для разработчика серверного ПО является востребованным и весьма полезным.

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

  1. Data Scientist
  2. BackEnd Developer
  3. DevOps Engineer
  4. Automation QA Engineer (Python)

Проанализируем каждое направление, затронув основные технологии. Также расскажем, каким образом Python используется в Desktop, Mobile и Game разработке.

 

Что должен знать Python Developer, работающий в сфере Data Science

 

Легкий и лаконичный Python нашел себе широкое применение в такой важной сфере разработки, как Data Science. Почему именно Python? Он прост в изучении и способен в несколько строк кода создать искусственный интеллект, который будет способен к самообучению, либо посчитать матрицу внушительных размеров.

Data Science подразумевает работу с большими объемами данных и включает в себя сбор, анализ, структурирование и дальнейшую визуализацию информации. Каждый специалист данной области занимается:

  • сбором большого количества неупорядоченных данных и преобразованием их в удобный формат;
  • решением бизнес-задач с использованием данных;
  • программированием на Python, R и других языках;
  • работой со статистикой;
  • использованием Machine Learning, Deep Learning и текстовой аналитике;
  • сотрудничеством с IT и бизнесом в равной мере;
  • изучением современных тенденций, которые могут помочь в разработке, которая ведется на данный момент в компании.   

Итак, какими технологиями необходимо владеть, чтобы стать Data Scientist?

 

Линейная алгебра и математический анализ

Data Science — это как раз та область, в которой без знаний математики ну никак. Работа с колоссальным объемом данных предусматривает в обязательном порядке применение аппарата линейной алгебры. А это матрицы, векторы, линейные уравнения, различные алгоритмы классификации и кластеризации, которые широко используются (подробнее в следующих разделах). Также необходимо знать оптимизацию средствами матанализа.

 

Статистика

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

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

 

Библиотеки и дополнительные инструменты Python

Для всевозможных математических вычислений используется Python, а точнее — его библиотеки. К примеру, Matplotlib и Seaborn используются при необходимости визуализации данных, NumPy для работы с уже упомянутой линейной алгеброй. Для научных вычислений прибегают к использованию SciPy. Pandas позволяет выполнять быстрый анализ, очистку и подготовку данных из разных источников — Excel, SQL, веб-страницы, файлы CSV. Таким образом, библиотеки Python предоставляют отличный набор для анализа данных и визуализации.

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

 

Базы данных

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

Существуют реляционные базы данных (так называемые, SQL базы данных) которые используют структурированный язык запросов, и нереляционные (NoSQL), которые предлагают динамическую структуру для определения и обработки данных. К системам управления баз данных (СУБД) первого типа относят MySQL, PostgreSQL, Microsoft SQL Server, Oracle. Ко второму типу — MongoDB, Cassandra, BigTable, Redis, RavenDB и прочие.

Несмотря на широкое распространение NoSQL, специалисты Data Science все же используют SQL технологии, поскольку зачастую работают именно с упорядоченным множеством данных (медицинские карты пациентов, транзакции клиентов и т. д.). Здесь наилучшим выбором станет PostgreSQL/MySQL/SQL Server.

 

Машинное обучение

Это ответвление искусственного интеллекта, основная идея которого состоит в следующем: компьютер должен не просто использовать заранее написанный алгоритм, а самостоятельно обучаться решению поставленной задачи (например, задачи определения символов по отсканированному изображению текста, опознавания лиц и голосов, подборки видеороликов на YouTube с учетом просмотренных ранее).

Минимальный набор базовых алгоритмов машинного обучения, который необходимо знать: линейная регрессия, логистическая регрессия, SVM (метод опорных векторов), random forest (“случайный лес”), дерево принятия решений, Gradient Boosting, РСА (метод главных компонент), k-means (кластеризация методом k-средних), k-NN (классификация методом k-ближайших соседей), ARIMA (интегрированная модель авторегрессии скользящего среднего).

Говоря о библиотеках Python, которые применяются в машинном обучении, отметим scikit-learn (работа с классическими алгоритмами машинного обучения), TensorFlow и Keras (работа с глубоким обучением, которое направленное на работу с нейронными сетями).

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

 

Что должен знать Python BackEnd Developer

 

Веб-сервера (Nginx, Apache)

BackEnd разработчику необходимо знать общие принципы работы веб-серверов, а также понимать, как в целом работает интернет и каким образом ваш код взаимодействует с серверами, базами данных и вообще с “внешним миром”.

 Веб-сервер — это программное обеспечение либо аппаратное средство, которое работает с целью приема HTTP-запросов, их обработки и последующей выдачи НТТР-ответов. На данный момент их существует множество, однако наибольшее распространение получили Nginx и Apache.

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

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

 

Базы данных (MySQL, MongoDB)

Серверная сторона программного обеспечения предусматривает активное использование серверов (от англ. “to serve” — служить). Это компьютеры, которые выполняют какую-либо сервисную задачу по приему, обработке и предоставлению информации пользователям.

Для BackEnd разработчика знание серверов и умение работать с ними является настолько же важным, насколько для FrontEnd разработчика — знание триады HTML, CSS и JavaScript. 

Работаете со структурированными данными, а среди ваших приоритетов надежность, окупаемость и совместимость со всеми основными ОС? Выбирайте MySQL. Если же вы ориентируетесь на скорость, гибкость, масштабируемость, удобство в управлении СУБД, либо вы просто не можете определить схему для своей БД, вам стоит сфокусироваться на изучении систем управления нереляционными базами данных. Хорошим выбором станет MongoDB благодаря

Основы языка программирования Python за 10 минут / Хабр

На сайте Poromenos’ Stuff была

опубликована статья, в которой, в сжатой форме,

рассказывают об основах языка Python. Я предлагаю вам перевод этой статьи. Перевод не дословный. Я постарался подробнее объяснить некоторые моменты, которые могут быть непонятны.

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

статья вам очень пригодится! За короткое время, вы сможете познакомиться с

основами языка Python. Хотя эта статья часто опирается

на то, что вы уже имеете опыт программирования, но, я надеюсь, даже новичкам

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

сжатостью материала, некоторые темы рассмотрены поверхностно, но содержат весь

необходимый метриал.

Основные свойства

Python не требует явного объявления переменных, является регистро-зависим (переменная var не эквивалентна переменной Var или VAR — это три разные переменные) объектно-ориентированным языком.

Синтаксис

Во первых стоит отметить интересную особенность Python. Он не содержит операторных скобок (begin..end в pascal или {..}в Си), вместо этого блоки выделяются отступами: пробелами или табуляцией, а вход в блок из операторов осуществляется двоеточием. Однострочные комментарии начинаются со знака фунта «#», многострочные — начинаются и заканчиваются тремя двойными кавычками «»»»».

Чтобы присвоить значение пременной используется знак «=», а для сравнения —

«==». Для увеличения значения переменной, или добавления к строке используется оператор «+=», а для уменьшения — «-=». Все эти операции могут взаимодействовать с большинством типов, в том числе со строками. Например

>>> myvar = 3

>>> myvar += 2

>>> myvar -= 1
«»«Это многострочный комментарий

Строки заключенные в три двойные кавычки игнорируются»»»

>>> mystring = «Hello»

>>> mystring += » world.»

>>> print mystring

Hello world.
# Следующая строка меняет

значения переменных местами. (Всего одна строка!)

>>> myvar, mystring = mystring, myvar

Структуры данных

Python содержит такие структуры данных как списки (lists), кортежи (tuples) и словари (dictionaries). Списки — похожи на одномерные массивы (но вы можете использовать Список включающий списки — многомерный массив), кортежи — неизменяемые списки, словари — тоже списки, но индексы могут быть любого типа, а не только числовыми. «Массивы» в Python могут содержать данные любого типа, то есть в одном массиве может могут находиться числовые, строковые и другие типы данных. Массивы начинаются с индекса 0, а последний элемент можно получить по индексу -1 Вы можете присваивать переменным функции и использовать их соответственно.

>>> sample = [1, [«another», «list»], («a», «tuple»)] #Список состоит из целого числа, другого списка и кортежа

>>> mylist = [«List item 1», 2, 3.14] #Этот список содержит строку, целое и дробное число

>>> mylist[0] = «List item 1 again» #Изменяем первый (нулевой) элемент листа mylist

>>> mylist[-1] = 3.14 #Изменяем последний элемент листа

>>> mydict = {«Key 1»: «Value 1», 2: 3, «pi»: 3.14} #Создаем словарь, с числовыми и целочисленным индексами

>>> mydict[«pi»] = 3.15 #Изменяем элемент словаря под индексом «pi».

>>> mytuple = (1, 2, 3) #Задаем кортеж

>>> myfunction = len #Python позволяет таким образом объявлять синонимы функции

>>> print myfunction(list)
3

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

>>> mylist = [«List item 1», 2, 3.14]

>>> print mylist[:] #Считываются все элементы массива

[‘List item 1’, 2, 3.1400000000000001]

>>> print mylist[0:2] #Считываются нулевой и первый элемент массива.

[‘List item 1’, 2]

>>> print mylist[-3:-1] #Считываются элементы от нулевого (-3) до второго (-1) (не включительно)

[‘List item 1’, 2]

>>> print mylist[1:] #Считываются элементы от первого, до последнего

[2, 3.14]

Строки

Строки в Python обособляются кавычками двойными «»» или одинарными «’». Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал ‘привет’!» будет выведена на экран как «Он сказал ‘привет’!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «»»»». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.

>>>print «Name: %s\nNumber: %s\nString: %s» % (myclass.name, 3, 3 * «-«)

Name: Poromenos

Number: 3

String: —  

strString = «»«Этот текст расположен

на нескольких строках»»»

 

>>> print «This %(verb)s a %(noun)s.» % {«noun»: «test», «verb»: «is»}

This is a test.

Операторы

Операторы while, if, for составляют операторы перемещения. Здесь нет аналога оператора select, так что придется обходиться if. В операторе for происходит сравнение переменной и списка. Чтобы получить список цифр до числа <number> — используйте функцию range(<number>). Вот пример использования операторов

rangelist = range(10) #Получаем список из десяти цифр (от 0 до 9)

>>> print rangelist

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for number in rangelist: #Пока переменная number (которая каждый раз увеличивается на единицу) входит в список…
# Проверяем входит ли переменная
# numbers в кортеж чисел (3, 4, 7, 9)
if number in (3, 4, 7, 9): #Если переменная number входит в кортеж (3, 4, 7, 9)…
# Операция «break» обеспечивает
# выход из цикла в любой момент
break
else:
# «continue» осуществляет «прокрутку»
# цикла. Здесь это не требуется, так как после этой операции
# в любом случае программа переходит опять к обработке цикла
continue
else:
# «else» указывать необязательно. Условие выполняется
# если цикл не был прерван при помощи «break».
pass # Ничего не делать

 
if rangelist[1] == 2:
print «The second item (lists are 0-based) is 2»
elif rangelist[1] == 3:
print «The second item (lists are 0-based) is 3»
else:
print «Dunno»

 
while rangelist[1] == 1:
pass

Функции

Для объявления функции служит ключевое слово «def». Аргументы функции задаются в скобках после названия функции. Можно задавать необязательные аргументы, присваивая им значение по умолчанию. Функции могут возвращать кортежи, в таком случае надо писать возвращаемые значения через запятую. Ключевое слово «lambda» служит для объявления элементарных функций .

# arg2 и arg3 — необязательые аргументы, принимают значение объявленное по умолчни,
# если не задать им другое значение при вызове функци.
def myfunction(arg1, arg2 = 100, arg3 = «test»):
return arg3, arg2, arg1
#Функция вызывается со значением первого аргумента — «Argument 1», второго — по умолчанию, и третьего — «Named argument».

>>>ret1, ret2, ret3 = myfunction(«Argument 1», arg3 = «Named argument»)
# ret1, ret2 и ret3 принимают значения «Named argument», 100, «Argument 1» соответственно

>>> print ret1, ret2, ret3

Named argument 100 Argument 1

 
# Следующая запись эквивалентна def f(x): return x + 1

functionvar = lambda x: x + 1

>>> print functionvar(1)
2

Классы

Язык Python ограничен в множественном наследовании в классах. Внутренние переменные и внутренние методы классов начинаются с двух знаков нижнего подчеркивания «__» (например «__myprivatevar»). Мы можем также присвоить значение переменной класса извне. Пример:

class Myclass:

common = 10
def __init__(self):
self.myvariable = 3
def myfunction(self, arg1, arg2):
return self.myvariable

 
# Здесь мы объявили класс Myclass. Функция __init__ вызывается автоматически при инициализации классов.

>>> classinstance = Myclass() # Мы инициализировали класс и переменная myvariable приобрела значение 3 как заявлено в методе инициализации

>>> classinstance.myfunction(1, 2) #Метод myfunction класса Myclass возвращает значение переменной myvariable
3
# Переменная common объявлена во всех классах

>>> classinstance2 = Myclass()

>>> classinstance.common
10

>>> classinstance2.common
10
# Поэтому, если мы изменим ее значение в классе Myclass изменятся
# и ее значения в объектах, инициализированных классом Myclass

>>> Myclass.common = 30

>>> classinstance.common
30

>>> classinstance2.common
30
# А здесь мы не изменяем переменную класса. Вместо этого
# мы объявляем оную в объекте и присваиваем ей новое значение

>>> classinstance.common = 10

>>> classinstance.common
10

>>> classinstance2.common
30

>>> Myclass.common = 50
# Теперь изменение переменной класса не коснется
# переменных объектов этого класса

>>> classinstance.common
10

>>> classinstance2.common
50

 
# Следующий класс является наследником класса Myclass
# наследуя его свойства и методы, ктому же класс может
# наследоваться из нескольких классов, в этом случае запись
# такая: class Otherclass(Myclass1, Myclass2, MyclassN)
class Otherclass(Myclass):
def __init__(self, arg1):
self.myvariable = 3
print arg1

 

>>> classinstance = Otherclass(«hello»)

hello

>>> classinstance.myfunction(1, 2)
3
# Этот класс не имеет совйтсва test, но мы можем
# объявить такую переменную для объекта. Причем

# tэта переменная будет членом только classinstance.

>>> classinstance.test = 10

>>> classinstance.test
10

Исключения

Исключения в Python имеют структуру tryexcept [exceptionname]:

def somefunction():
try:
# Деление на ноль вызывает ошибку
10 / 0
except ZeroDivisionError:
# Но программа не «Выполняет недопустимую операцию»
# А обрабатывает блок исключения соответствующий ошибке «ZeroDivisionError»
print «Oops, invalid.»

 

>>> fnexcept()

Oops, invalid.

Импорт

Внешние библиотеки можно подключить процедурой «import [libname]», где [libname] — название подключаемой библиотеки. Вы так же можете использовать команду «from [libname] import [funcname]», чтобы вы могли использовать функцию [funcname] из библиотеки [libname]

import random #Импортируем библиотеку «random»
from time import clock #И заодно функцию «clock» из библиотеки «time»

 

randomint = random.randint(1, 100)

>>> print randomint
64

Работа с файловой системой

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

import pickle

mylist = [«This», «is», 4, 13327]
# Откроем файл C:\binary.dat для записи. Символ «r»
# предотвращает замену специальных сиволов (таких как \n, \t, \b и др.).

myfile = file(r«C:\binary.dat», «w»)
pickle.dump(mylist, myfile)

myfile.close()

 

myfile = file(r«C:\text.txt», «w»)

myfile.write(«This is a sample string»)

myfile.close()

 

myfile = file(r«C:\text.txt»)

>>> print myfile.read()
‘This is a sample string’

myfile.close()

 
# Открываем файл для чтения

myfile = file(r«C:\binary.dat»)

loadedlist = pickle.load(myfile)

myfile.close()

>>> print loadedlist

[‘This’, ‘is’, 4, 13327]

Особенности

  • Условия могут комбинироваться. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Используйте операцию «del» чтобы очищать переменные или элементы массива.
  • Python предлагает большие возможности для работы со списками. Вы можете использовать операторы объявлении структуры списка. Оператор for позволяет задавать элементы списка в определенной последовательности, а if — позволяет выбирать элементы по условию.

>>> lst1 = [1, 2, 3]

>>> lst2 = [3, 4, 5]

>>> print [x * y for x in lst1 for y in lst2]

[3, 4, 5, 6, 8, 10, 9, 12, 15]

>>> print [x for x in lst1 if 4 > x > 1]

[2, 3]
# Оператор «any» возвращает true, если хотя
# бы одно из условий, входящих в него, выполняется.

>>> any(i % 3 for i in [3, 3, 4, 4, 3])
True
# Следующая процедура подсчитывает количество
# подходящих элементов в списке

>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 3)
3

>>> del lst1[0]

>>> print lst1

[2, 3]

>>> del lst1

  • Глобальные переменные объявляются вне функций и могут быть прочитанны без каких либо объявлений. Но если вам необходимо изменить значение глобальной переменной из функции, то вам необходимо объявить ее в начале функции ключевым словом «global», если вы этого не сделаете, то Python объявит переменную, доступную только для этой функции.

number = 5

 
def myfunc():
# Выводит 5
print number

 
def anotherfunc():
# Это вызывает исключение, поскольку глобальная апеременная
# не была вызванна из функции. Python в этом случае создает
# одноименную переменную внутри этой функции и доступную
# только для операторов этой функции.
print number

number = 3

 
def yetanotherfunc():
global number
# И только из этой функции значение переменной изменяется.

number = 3

Эпилог

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

Преимущества Python

  • Скорость выполнения программ написанных на Python очень высока. Это связанно с тем, что основные библиотеки Python

    написаны на C++ и выполнение задач занимает меньше времени, чем на других языках высокого уровня.
  • В связи с этим вы можете писать свои собственные модули для Python на C или C++
  • В стандартныx библиотеках Python вы можете найти средства для работы с электронной почтой, протоколами

    Интернета, FTP, HTTP, базами данных, и пр.
  • Скрипты, написанные при помощи Python выполняются на большинстве современных ОС. Такая переносимость обеспечивает Python применение в самых различных областях.
  • Python подходит для любых решений в области программирования, будь то офисные программы, вэб-приложения, GUI-приложения и т.д.
  • Над разработкой Python трудились тысячи энтузиастов со всего мира. Поддержкой современных технологий в стандартных библиотеках мы можем быть обязаны именно тому, что Python был открыт для всех желающих.

Python: что нужно знать

Стоит ли учить именно Python? И чем он отличается от других языков? Давайте сравним его с Java — ещё одним кроссплатформенным объектно-ориентированным языком, с которым Python соревнуется в рейтингах, и с JavaScript — популярным скриптовым языком для веб-разработки.

Python и Java — соседи по рейтингу, и у них есть общие черты: например, поддержка объектно-ориентированного программирования и кроссплатформенность.

Но много и различий.

Начнём с формальных различий: в Java, в отличие от Python, типизация статическая. Это значит, что типы переменных прописываются в коде и считываются на этапе компиляции, а некорректная программа просто не запустится. В Python вы сэкономите время разработки (типы переменных не надо обозначать), но об ошибках узнаете уже после запуска программы.

Python — интерпретируемый язык (об этом мы чуть подробнее рассказали выше), а Java использует и компиляцию, и интерпретацию. Благодаря этому Java получает выгоду обоих способов — кроссплатформенность и скорость.

Здесь выигрывает Java. Скорость — её большое преимущество, в то время как у Python это одна из слабостей. Например, простое двоичное дерево выполняется в Java в 10 раз быстрее.

Синтаксис Java похож на синтаксисы C и С++. У всех этих языков достаточно строгий и «многословный» синтаксис, и для новичков это минус: вместо того чтобы сосредоточиться на том, что писать, приходится больше думать о том, как писать. Впрочем, от витиеватости языка страдают не только новички. Большая часть работы программиста — это работа с уже написанным кодом, поэтому читаемость очень важна.

В Python синтаксис очень лаконичный, а код минималистичный и хорошо читается.

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

Python — замечательный выбор для машинного обучения, автоматизации, искусственного интеллекта и веб-разработки.

16 фактов о программировании на Python

Python занял первое место в списке лучших языков программирования по версии IEEE Spectrum за 2019 год. Сегодня мы рассмотрим некоторые интересные факты о программировании на Python, чтобы лучше понять, что делает его таким популярным. Почти каждая отрасль бизнеса сейчас использует этот язык программирования. Эксперты советуют начать его изучение как можно скорее.

Ниже мы представляем вашему вниманию подборку из 16 наиболее интересных фактов о программировании на этом языке.

1. Python изначально был хобби-проектом

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

2. Почему он называется Python

Название языка не имеет ничего общего со змеями, он назван так в честь популярной британской комедийной труппы Монти Пайтона из 1970ых. Гвидо является большим фанатом «Летающего Цирка Монти Пайтона». Находясь в довольно мрачном настроении, он и назвал проект «Python». Разве это не интересный факт о Python?

3. Зен Python’а

Тим Питерс, основной вкладчик сообщества Python, написал это стихотворение, чтобы подчеркнуть философию Python. Если вы введете «import this» в Python, то увидите это стихотворение:

Ниже представлен перевод на русский язык:

  • Красивое лучше, чем уродливое.
  • Явное лучше, чем неявное.
  • Простое лучше, чем сложное.
  • Сложное лучше, чем запутанное.
  • Плоское лучше, чем вложенное.
  • Разреженное лучше, чем плотное.
  • Читаемость имеет значение.
  • Особые случаи не настолько особые, чтобы нарушать правила.
  • При этом практичность важнее безупречности.
  • Ошибки никогда не должны замалчиваться.
  • Если они не замалчиваются явно.
  • Встретив двусмысленность, отбрось искушение угадать.
  • Должен существовать один и, желательно, только один очевидный способ сделать это.
  • Хотя он поначалу может быть и не очевиден, если вы не голландец( Отсылка к нидерландскому программисту, создавшему язык Python, Гвидо ван Россуму  ).
  • Сейчас лучше, чем никогда.
  • Хотя никогда зачастую лучше, чем прямо сейчас.
  • Если реализацию сложно объяснить — идея плоха.
  • Если реализацию легко объяснить — идея, возможно, хороша.
  • Пространства имён — отличная штука! Будем делать их больше!

4. Реализации Python’a

Python поставляется в различных реализациях, используемых для различных целей:

  • CPython — написанный на C, наиболее распространенная реализация Python
  • Jython — написанный на Java, компилируется в байт-код
  • IronPython — реализован в C#, используется для платформ, написанных на .NET
  • Brython — браузерный Python, работает в браузере
  • RubyPython — мост между интерпретаторами Python и Ruby
  • PyPy — Python, реализованный на Python
  • MicroPython — работает на микроконтроллерах

5. Большие компании, использующие Python

Многие компании с громкими именами используют (или использовали) Python для своих продуктов/услуг. Вот некоторые из них:

  • NASA
  • Google
  • Nokia
  • IBM
  • Yahoo! Maps
  • Walt Disney Feature Animation
  • Facebook
  • Netflix
  • Expedia
  • Reddit
  • Quora
  • MIT
  • Disqus
  • Hike
  • Spotify
  • Udemy
  • Shutterstock
  • Uber
  • Amazon
  • Mozilla
  • Dropbox
  • Pinterest
  • Youtube

6. Никаких фигурных скобок

В отличие от Java и C++, Python не использует фигурные скобки для разделения кода. Для этого используются отступы. Если вы решите импортировать скобки из пакета __future__, он выбросит вам остроумную ошибку:

без шансов

7. Функции могут возвращать несколько значений

В Python функция может возвращать более одного значения в виде кортежа. Посмотрите на следующий код:

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

8. Python поддерживает несколько присваиваний одним оператором

Python позволит вам присвоить одно и то же значение нескольким переменным в одном операторе. Это также позволит вам присваивать значения нескольким переменным одновременно.

Это также означает, что обмен значениями в Python происходит быстрее и может быть выполнен всего в 1 строке кода:

9. Проще развернуть список при помощи слайсинга

Если мы прослайсим список значений от начала до конца, но с шагом -1, то получим список справа налево (в обратном порядке).

10. Можно использовать цепи сравнений

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

11. Строковые литералы объединяются

Если вы вводите строковые литералы, разделенные пробелом, Python объединяет их. Итак, «Привет », «Мир» становится «Привет мир».

12. Антигравитация

Если вы зайдете в консоль и напишете import antigravity, откроется веб-страница с комиксом о модуле антигравитации.

факт, 16  фактов о программировании на Python

13. Python повлиял на JavaScript

Python является одним из 9 языков, которые повлияли на дизайн JavaScript. Другие языки — AWK, C, HyperTalk, Java, Lua, Perl, Scheme и Self.

14. Циклы for и while могут содержать операторы else

Оператор else используется не только с операторами if и try. Если вы добавите блок else после цикла for или while, операторы внутри блока else будут выполняться только после того, как цикл завершится нормально, то есть без ошибок. Если цикл вызывает исключение или достигает оператора break, код в else не выполняется. Это можно использовать для функций поиска.

15. _ получает значение последнего выражения

Многие люди используют Python в качестве калькулятора. Чтобы получить значение/результат последнего выражения, используйте нижнее подчеркивание.

16. Люди предпочитают Python французскому

Согласно недавнему опросу, в 2015 году в Великобритании Python обогнал французский и стал самым популярным языком в начальных школах. Из 10 родителей, 6 предпочли, чтобы их дети изучали Python, а не французский.

Надеемся, вам было весело узнавать что-то новое о Python. Хотите продолжить список? Оставьте комментарий ниже.

Специальность Python developer, задачи и обязанности Python разработчиков

Поскольку наиболее популярным направлением Python-разработки является веб-разработка, разберем именно путь Python веб-программиста.  

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

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

Когда хорошо овладеете навыками программирования на Python, можно приступать к освоению одного или нескольких популярных фреймворков —  Django, Flask, Pyramid, Tornado, основ верстки (языки верстки HTML и CSS), и языка JavaScript. Мы рекомендуем использовать онлайн-тренажеры, например, интерактивный тренажер от ITVDN, с помощью которого вы сможете проверить ваше владение навыками написания кода на HTML, CSS, JavaScript и Python.

Также вам будет необходимо реляционные базы данных, научиться работать с системами управления базами данных (PostgreSQL, MySQL) и с ORM (например, Django ORM).

Знание английского на уровне не ниже Intermediate обязательно. Оно вам понадобится для комфортного поиска информации по Python и сопутствующим технологиям в интернете.

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

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

Изучите Git, начните делать свой небольшой проект и опубликуйте его на GitHub — это даст вам ценный опыт работы с распределенной системой управления версиями и позволит проверить свои навыки в решении реальной задачи. Несколько хороших проектов, и полноценное портфолио готово, а с ним вы можете уверенно подавать резюме на вакансию Python Backend разработчика.

расширений Python в QtCreator

  • Дизайн
  • Развитие
  • Развернуть
  • Товар

    • Товар
      • Инструменты дизайна
      • Инструменты разработки
      • Рамка
      • Поддерживаемые платформы и языки
      • Особенности
      • Расширение в Qt Marketplace
    • Отраслевые решения
      • Автомобильная промышленность
      • Промышленная автоматизация
      • Бытовая электроника
      • Медицинский
    • Примеры использования платформы

      • Встроенные устройства
      • Микроконтроллеры (MCU)
      • Интернет вещей
      • Настольное приложение
      • Несколько экранов
      • Мобильные устройства
  • Почему Qt?

    • Почему Qt
      • Обзор
      • Истории успеха
      • Компания
      • Инвесторы
      • Карьера
  • Ресурсы

    • Услуги
      • Профессиональные услуги
      • Консультации
      • Обучение
      • Поддержка
    • Другие ресурсы
      • Ресурсный центр
      • Вебинары

.

Qt для Python Начало работы — Qt для Python

Эта страница посвящена созданию Qt для Python из исходных текстов, если вы просто хотите установить PySide2
с pip вам нужно запустить:

для получения дополнительных сведений см. наше краткое руководство. Кроме того, вы можете
проверьте FAQ по проекту.

Направляющих на платформу

Инструкции для конкретной платформы можно найти на следующих страницах:

  • Окна

  • macOS

  • Linux

  • Мобильные платформы (iOS / Android) (без поддержки)

  • Встроенные платформы (без официальной поддержки)

    Примечание

    Большинство встроенных ОС на базе Linux предоставляют PySide2 свои официальные
    менеджер пакетов (e.грамм. Raspbian и ArchlinuxARM).

Обычная команда строительства будет выглядеть так:

 python setup.py install --qmake = / путь / к / qmake \
                        --ignore-git \
                        --debug \
                        --build-tests \
                        --parallel = 8 \
                        --make-spec = ниндзя \
                        --verbose-build \
                        --module-подмножество = ядро, GUI, Виджеты
 

, который будет собирать и устанавливать проект с отладочными символами, включая тесты ,
с использованием ninja (вместо make) и с учетом только подмножества модулей QtCore, QtGUI
и QtWidgets.

Другие важные параметры, которые следует учитывать:
  • --cmake , чтобы указать путь к двоичному файлу cmake,

  • --reuse-build , для восстановления только измененных файлов,

  • --openssl = / path / to / openssl / bin , чтобы использовать другой путь для OpenSSL,

  • --standalone , чтобы скопировать библиотеки Qt в окончательный пакет
    для работы на других машинах,

  • --doc-build-online , для создания документации с использованием онлайн-шаблона.

Тестирование установки

После завершения установки вы сможете выполнить любой из наших примеров:

 примеров Python / виджеты / виджеты / tetrix.py
 

Текущие испытания

Использование опции --build-tests позволит нам запустить все автоматические тесты внутри проекта:

 python testrunner.py тест> testlog.txt
 

Примечание

В Windows не забудьте установить qmake на своем пути
( установить PATH = E: \ Path \ to \ Qt \ 5.14 \ msvc2017_64 \ bin;% ПУТЬ% )

Вы также можете запустить определенный тест (например, qpainter_test ), запустив:

 ctest -R qpainter_test --verbose
 

Строительная документация

Документация создается с использованием qdoc для получения информации API, а также sphinx
для местных примечаний, связанных с Python.

Системе требуются libxml2 и libxslt , также в среде Python, sphinx и
graphviz необходимо установить перед запуском процесса установки:

 pip установить graphviz sphinx
 

После установки graphviz команда dot должна быть в PATH, в противном случае
процесс не удастся.Также возможна установка graphviz в масштабе всей системы.

Поскольку процесс зависит от установки Qt, вам необходимо указать, где находится каталог qtbase
вы будете использовать со своим qmake находится:

 экспорт QT_SRC_DIR = / путь / к / qtbase
 

После завершения процесса сборки вы можете перейти к сгенерированному * _build / * _ release / pyside2
каталог и запустите:

Примечание

apidoc make target создает автономную документацию в формате QCH (Qt Creator Help)
по умолчанию.Вы можете переключиться на сборку для онлайн-использования с --doc-build-online
вариант настройки.

Наконец, вы получите каталог html , содержащий всю сгенерированную документацию. Офлайн
Файлы справки, PySide.qch и Shiboken.qch , можно переместить в любой каталог по вашему выбору. Вы
можно найти Shiboken.qch в каталоге сборки, * _build \ * _ release \ shiboken2 \ doc \ html .

Просмотр офлайн-документации

Офлайн-документацию (QCH) можно просмотреть с помощью Qt Creator IDE или Qt Assistant, которые
автономное приложение для просмотра файлов QCH.

Чтобы просмотреть QCH с помощью Qt Creator, следуя инструкциям, изложенным в
Использование режима справки Qt Creator. Если вы выбрали
вместо этого используйте Qt Assistant, используйте следующую команду для регистрации файла QCH перед запуском
Qt Assistant:

помощник -регистратор PySide.qch

Примечание

Qt Assistant визуализирует содержимое QCH, используя бэкэнд QTextBrowser, который поддерживает
подмножество стилей CSS, однако Qt Creator предлагает альтернативу на основе litehtml
бэкэнд, который предлагает лучший опыт просмотра.На данный момент это не по умолчанию
бэкэнд, поэтому вам нужно выбрать бэкэнд litehtml
явно на вкладке Общие в Qt Creator >> Инструменты >> Параметры >> Справка .

,

PAGE — Python GUI Generator

PAGE — Python GUI Generator

Сводка по Sourceforge Страница
Краткое описание
Поддерживаемые системы
Установка
Документация
Скачать
Небольшие предложения на ваше рассмотрение.
& nbspVrex — Визуальное регулярное выражение, написанное на Python
Изречения, которые сослужили мне хорошую службу
Автор

Краткое описание

PAGE — это кроссплатформенный генератор графического интерфейса с функцией перетаскивания, поддерживающий
сходство с Visual Basic.Это позволяет легко создавать графический интерфейс Python
окна, содержащие набор виджетов Tk и ttk. Обязательными являются
Tcl / Tk 8.6 и Python 2.7+. На самом деле я использую Tcl / Tk 8.6 и Python
3,7. Я больше не отвечаю на проблемы, связанные с Python 2.

PAGE возникает из Virtual Tcl, программы Tcl / Tk, созданной для создания
Модули Python, реализующие желаемый графический интерфейс. Tcl требуется для
работает PAGE, но не требуется для выполнения сгенерированного Python
код.

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

Обзор изменений:

  • Релиз 4.2 — это основной выпуск, включающий подход к
    проблема переделки.

  • 4.3 расширяет поддержку доработки, чтобы опционально обновить существующую
    модуль поддержки с переменными Tk и каркасными функциями заново
    требуется в результате переделки.
  • Версия 4.4 поддерживает всплывающие или контекстные меню. Также поддержка ttk
    menubuttons был удален в ожидании дальнейшей отладки. Наконец, поддержка
    удалена возможность определения и редактирования функций;

  • Выпуск 4.5 поддерживает размещение графического интерфейса по умолчанию.
    расположение, определяемое оконным менеджером.

  • Версия 4.6 включает новую функцию. а) Показывает сгенерированный код в отдельных окнах консоли. б) Позволяет загружать консольные окна без ввода кода.c) Позволяет открывать избранные пользователями IDE с сохраненными версиями сгенерированного кода.

  • Выпуск 4.7 включает поддержку привязки событий к верхнему уровню.
    windows и реорганизует сгенерированный код для большей ясности и
    предоставляет списки переменных параметров для функции init в поддержке
    модуль с использованием соглашения Python * vargs, ** kwargs. Важный
    исправления для вырезания, копирования и вставки, а также для виджета TCombobox.

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

  • В выпуске 4.8.1 исправлена ​​ошибка, из-за которой PAGE не открывается в
    Окна.

  • В выпуске 4.8.2 исправлена ​​ошибка, которая не позволяет открывать СТРАНИЦУ, когда файл .pagerc
    файл отсутствует.

  • В выпуске 4.8.3 исправлена ​​ошибка, которая не позволяет открыть существующий проект.
    файлы.

  • В выпуске 4.8.4 исправлена ​​ошибка, мешающая сохранению
    модуль поддержки в некоторых случаях, когда СТРАНИЦА должна обновить модуль поддержки.
  • В выпуске 4.8.5 исправлены ошибки шрифтов, относящиеся к окнам «О программе» и «Ошибка».

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

  • В выпуске 4.8.7 исправлена ​​ошибка пользовательского виджета, а также внесены изменения в
    обработка шрифтов, контекстные меню, установка Windows и обновление
    документация.

  • В выпуске 4.8.8 исправлены ошибки, возникающие при отсутствии .pagerc.

  • В выпуске 4.8.9 исправлена ​​ошибка, которая представляет интерес для пользователей Windows, которые
    установить СТРАНИЦУ в настраиваемых местах, где имя пути включает
    заготовки.Небольшие изменения в документации о привязках событий. Новый
    добавлен пример. В создание меню было внесено изменение, чтобы избежать появления сбивающих с толку сообщений об ошибках.

  • В выпуске 4.9 исправлена ​​ошибка, связанная со значениями состояния некоторых из
    виджеты. Он также улучшает дерево виджетов, изменяя метки на
    отобразить класс и псевдоним виджета.

  • Релиз 4.10 включает средство повторного использования, которое позволяет вырезать из
    существующие проекты и вставьте в текущий проект. Этот выпуск также
    изменяет запуск для автоматического создания виджета Toplevel и
    расширяет поддержку виджета Canvas и добавляет некоторую проверку
    синтаксис идентификатора.Кроме того, есть новая кастомная версия
    Виджет TNotebook, содержащий значок для закрытия вкладок.

  • Выпуск 4.11 позволяет копировать строку меню из существующего
    проект к текущему проекту. Важное дополнение — включение
    учебника, написанного Грегом Уолтерсом.

  • В выпуске 4.12 исправлено несколько ошибок, связанных с размещением, обрезкой и
    паста и заимствования.

  • Выпуск 4.13 добавляет функцию поиска в консоли Python, исправляет
    проблема с раскраской синтаксиса, добавлена ​​дополнительная поддержка кодировки utf-8 и
    исправляет некоторые ошибки.
  • Выпуск 4.14 предоставляет функцию сохранения дерева виджетов в
    файл и функция для отображения функций обратного вызова. Также внесены исправления
    для копирования и вставки, а также для относительного размещения.
  • В выпуске 4.15 улучшено использование окна привязки, улучшено
    отображение callback-функций и автоматическое сохранение проекта
    файл. Добавлен виджет ttk :: separator и поддержка настраиваемых
    виджеты расширены. Теперь можно заблокировать индивидуальную геометрию виджета
    предотвратить изменения мыши.
  • В выпуске 4.16 исправлена ​​важная ошибка в обновлении модуля поддержки.
    функция, а также улучшение функции «Заполнить контейнер».
  • В выпуске 4.17 заблокированное состояние виджета отображается в
    Редактор атрибутов, добавляет предпочтение для установки отступа,
    расширяет вкладки при обновлении модуля поддержки, исправляет тонкую ошибку с
    размещение в виджетах labelframe и расширяет возможности использования геометрических
    атрибуты в редакторе атрибутов.
  • В выпуске 4.18 улучшены виджеты с прокруткой для поддержки колесика мыши.
    прокрутка, изменяет стиль импорта tkinter, добавляет нумерацию строк
    в консоли Python, включает контекстное меню для редактора атрибутов,
    и исправляет ошибки.
  • Версия 4.19 предоставляет механизм Stash and Apply для передачи атрибутов из одного виджета в другой, включает контекстные меню в редакторе атрибутов для передачи атрибутов из одного виджета в другие -: ref: `см. Редактор атрибутов`, дополнительно улучшает прокрутку окон PAGE, исправляет ошибки, связанные с цветовыми предпочтениями.

  • В выпуске 4.20 исправлены ошибки, связанные с виджетами Scale и Scrolledtreeview.
  • Выпуск 4.21 включает всплывающую справку (всплывающие подсказки) для многих поддерживаемых виджетов и исправления ошибок, связанных с изображениями виджетов.
  • В выпуске 4.22 исправлено несколько ошибок.
  • В выпуске 4.23 исправлено несколько ошибок, одна из которых связана с
    Scrolledtreeview, еще один для генерации кода при отсутствии IDE
    спецификация, а другая связана с изменением атрибутов относительного размера в
    редактор атрибутов. Поддержка шрифтов выявила ошибки и должна быть
    фиксированный. Наконец, проблемы с кодированием и интернационализацией были
    на имя.
  • В выпуске 4.23a исправлена ​​ошибка, препятствующая генерации кода.
  • 4.Выпуск 24 включает дальнейшие исправления для изображений виджетов, и
    спецификация шрифта. Это также облегчает использование нескольких
    файлы инициализации.
  • Выпуск 4.25 позволяет много работать в 32-битной системе Windows.
    лучше. Позволяет открывать файлы проекта на разных дисках.
    с текущего диска, улучшает «Спрятать и применить», чтобы облегчить
    выравнивание виджета, изменяет функцию предпочтений, чтобы разрешить
    сохранение настроек в именованный файл и исправление нескольких ошибок.
  • 4.В выпуске 25.1 исправлена ​​ошибка, влияющая на генерацию Python для
    количество виджетов ttk, когда проект не был сохранен и открыт повторно
    перед генерацией кода модуля GUI.
  • В выпуске 4.26 исправлено несколько ошибок, связанных с дескрипторами виджетов,
    блокнот и генерация меню. Он также предварительно исследует
    пакет ttkwidgets.
  • Релиз 5.0 содержит переписанный код обновления модуля поддержки,
    предоставляет ограниченную функциональность для выбора нескольких виджетов, добавляет
    виджет Scrolledwindow, основанный на виджете холста, добавляет New
    в меню Файл в главном меню, расширяет положение относительно
    этап проектирования разработки графического интерфейса, обеспечивающий улучшение WYSIWYG, и
    исправляет ряд ошибок.
  • В версии 5.0.1 исправлена ​​ошибка в документации версии 5.0.
  • В выпуске 5.0.2 исправлена ​​ошибка с занятыми курсорами на странице PAGE.
    окна.
  • В выпуске 5.0.3 исправлены ошибки относительного размещения и множественных
    выбор.
  • Версия 5.1 расширяет функции, доступные в множественном выборе,
    предоставляет возможность экспериментальной отмены некоторых операций,
    лучше обрабатывает буквы устройств Windows,
    улучшает изменение размера панелей в окнах с панелями.
  • В выпуске 5.2 исправлено сохранение спецификации шрифта для прокручиваемых
    виджеты, изменяет поддержку всплывающих подсказок, расширяет множественный выбор
    средство и улучшает отмену.

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

Поддерживаемые системы

В настоящее время PAGE и полученные окна графического интерфейса протестированы на
Linux под управлением Python 3.8 под управлением Linux, Win32 и
Windows 10, OSX и Raspbian.

Версии программного обеспечения, использованные для тестирования СТРАНИЦЫ 5, были:

PAGE больше не тестируется на Python 2 и примерах Python 2.
больше не поддерживаются.

Поддерживаемые виджеты Tk:

  • Высший уровень
  • кнопка
  • холст
  • Checkbutton
  • запись
  • Рамка
  • метка
  • Labelframe
  • Listbox
  • Сообщение
  • Всплывающее меню
  • Переключатель
  • Масштаб
  • со счётчиком
  • Текст

а также следующие виджеты ttk:

  • TButton
  • TCheckbutton
  • TComboBox
  • TEntry
  • TFrame
  • TLabel
  • TLabelframe
  • TNotebook
  • TPanedwindow
  • TProgressBar
  • TRadiobutton
  • TScale
  • TSeparator
  • TSizegrip

и прокручиваемые виджеты на основе виджетов ttk на основе
Примеры pyttk от Гильерме Поло:

  • Scrolledentry
  • Scrolledlistbox
  • Scrolledtext
  • Scrolledtreeview
  • Scrolledwindow

и наконец

  • Пользовательский виджет
  • PNotebook
  • Справка по всплывающим подсказкам — Поддержка всплывающих подсказок

Прочие характеристики:

  • Редактор меню для создания меню.
  • Редактор атрибутов для простого изменения атрибутов виджета.
  • Редактор привязки событий.
  • Редактор для указания страниц Notebook и панелей Panedwindow.
  • Поддержка всплывающих подсказок.

Установка

Необходимые пакеты для выполнения PAGE:

  • СТРАНИЦА 4.19 или выше — это генератор графического интерфейса. Фактически один
    следует использовать последнюю версию.
  • Tcl / Tk 8.6 или выше. — Я использую Tcl / Tk 8.6.7 ActiveTcl
    пакет. Tcl / Tk требуется для выполнения PAGE. Tcl / Tk равно
    требуется, потому что PAGE написан на Tcl / Tk.

Хотя Python выполняет интерфейс tkinter для Tcl / Tk,
для запуска PAGE требуется полная установка Tcl / Tk. Многие окна
пользователи сообщили о проблемах, которые проявились в сообщении «не удалось найти
wish.exe «, которые были устранены установкой
Tcl / Tk. Пользователям Raspbian также может потребоваться установить Tcl / Tk.

Все, что требуется для выполнения кода Python, сгенерированного PAGE
это Python 3:
Хотя сгенерированный код Python будет выполняться под Python 2.7, тестирование кода выполняется с использованием Python 3.8, и Python 2.7 больше не рекомендуется.
Текущая версия Python
Пакет tkinter включает набор виджетов ttk.
Необязательно устанавливать Tcl / Tk или PAGE для выполнения программ.
содержащий графический интерфейс, созданный PAGE. Все, что нужно, это Python
версия, которая включает виджеты ttk.

В Linux загружается PAGE-xxx.tgz и разворачивается в каталоге.
обычно домашний каталог. Эта «страница» каталога содержит скрипт
«страница», которая выполняется для вызова PAGE в Unix-подобных системах.
сценарий «page» необходимо изменить, чтобы отразить расположение «wish»,
Tk интерпретатор и расположение каталога PAGE. это
изменение может быть выполнено вручную или путем выполнения команды «настроить»
скрипт в каталоге PAGE.

В Windows загрузите и запустите PAGE-xxx.exe, создав каталог c: \ page и
значок на экране для выполнения PAGE.
Рекомендуется добавить каталог установки в среду PATH.
переменная.

Документация

Пользовательская документация, которая также
входит в комплект.Есть сейчас
версия документации в формате Epub.

С версией 4.11, новый подкаталог руководств, «page / docs / tutorial»
был добавлен в пакет выпуска, содержащий новое руководство и
пример кода, написанный Грегом Уолтерсом. Учебник можно скачать
из DropBox.

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

Загрузить

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

,

Функции отладки Tcl

Как и выше, я написал серию Tcl
функции отладки, которые упрощают вставку отладки
операторы в tcl-программу.

Небольшие предложения на ваше рассмотрение.

Vrex — Визуальное регулярное выражение, написанное на Python

Это пример кода на основе Visual REGEXP. Это инструмент для
построение и тестирование регулярных выражений Python. Он был обновлен до
используйте ttk :: panedwindow и это
Vrex предоставляет большую часть
очевидные возможности этой программы, следовательно, нижний регистр в
название. Это инструмент, который я использую все время. Он будет работать под Python
2.7 и 3.2.

Слова, которые сослужили мне хорошую службу

За свою карьеру программиста я заметил некоторые вещи, которые
мне очень помогло.Смотрите пословицы.

Автор

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

Электронная почта :

.

Ваше первое приложение с графическим интерфейсом пользователя на Python и PyQt — Python для инженеров

ПРИМЕЧАНИЕ. Здесь доступно обновленное руководство по PyQt5 и PySide2, а также обновленные снимки экрана от Qt Creator.

Введение

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

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

Это то, что мы будем строить:

qt19

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

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

qt21

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

Весь исходный код здесь.

Предварительные требования

Если вы последовали моему совету и установили Anaconda, у вас уже будет PyQt4. Если нет, вам нужно будет получить его отсюда.

Вам также понадобится Qt Designer.

Обновление : как Стив указывает в комментариях, Anaconda поставляется с qt-дизайнером, поэтому вам не нужно ничего загружать! Он находится в:… \ Anaconda3 \ Library \ bin и называется designer-qt4.Exe.

Я рекомендую вам загрузить весь пакет QT, так как там есть и другие полезные инструменты.

Начало работы

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

Запустите QT Designer. В появившемся окне выберите Главное окно, так как это даст пустой холст:

qt01

Следующее, что нужно сделать, это выбрать поле Text Edit слева:

qt2

Перетащите Text Edit в главное окно, чтобы получить поле вроде:

qt4

Видите правую сторону, где я коряво красным обведен рамкой? Вот где название объекта.Имя — это способ, которым этот объект будет вызываться из нашего кода Python, поэтому назовите его как-нибудь разумным.

qt5

Я называю это price_box, , так как мы будем вводить цену в это поле. Следующее, что мы сделаем, — это прикрепим к ящику этикетку, чтобы пользователю было понятно, для чего этот ящик.

qt6

Надпись обведена кружком. Перетащите его в главное окно.

qt7

Он получает текст по умолчанию TextLabel .Дважды щелкните по нему и измените его на Цена . Вы также можете сделать текст крупным и жирным, как показано здесь:

qt8

Для налогового ящика мы будем использовать что-то другое. См. Счетчик :

qt9

Круг слева — это счетчик . Это ограничивает значения, которые вы можете ввести. Нам не нужен счетчик , просто приятно увидеть, как вы можете использовать различные виджеты, которые предоставляет QT Creator. Перетащите счетчик в окно.Первое, что мы делаем, это меняем objectName на что-нибудь разумное, в нашем случае tax_rate . Помните, что именно так этот объект будет вызываться из Python.

qt10

Мы можем выбрать значение по умолчанию для нашего счетчика . Я выбираю 20:

qt011

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

Мы также добавим еще один ярлык под названием Tax Rate , как и раньше.Также посмотрите на кнопку в кружке , которую мы будем использовать дальше:

qt012

Теперь выберите поле Push Button и перетащите его в наше окно.

qt13

На кнопке написано PushButton , что не очень помогает. К настоящему времени вы должны знать, как это изменить. Но перед этим меняем название кнопки (а не текст) на calc_tax_button .

qt14

Далее меняем собственно текст:

qt15

Перетащите другое поле Text Edit в окно.Маркировать его не нужно, так как мы напечатаем здесь результат. Измените его имя на results_window (не показано ниже, но вы уже должны знать, как это сделать).

qt16

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

qt18

И сохраните свою работу:

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

Этот файл, который мы создали, является просто файлом XML.Откройте его в текстовом редакторе, если хотите, и вы найдете что-то вроде этого:

qt22
Запись кода

Код

Qt объектно-ориентирован и прост в использовании. Каждый из добавленных нами виджетов представляет собой объект со своими собственными функциями, например toPlainText () ( для чтения значения в поле). Это делает его довольно простым в использовании.

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

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

Код:

import sys
из PyQt4 импортировать QtCore, QtGui, uic

qtCreatorFile = «» # Введите сюда файл.Ui_MainWindow, QtBaseClass = uic.loadUiType (qtCreatorFile)

класс MyApp (QtGui.QMainWindow, Ui_MainWindow):
def __init __ (сам):
QtGui.QMainWindow .__ __ INIT (Я)
Ui_MainWindow .__ __ INIT (Я)
self.setupUi (Я)

если __name__ == «__main__»:
app = QtGui.QApplication (sys.argv)
window = MyApp ()
window.show ()
sys.exit (приложение.exec_ ())

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

13

14

18

import sys

from PyQt4 import QtCore, QtGui, uic

qtCreatorFile = «» # Введите сюда файл.

Ui_MainWindow, QtBaseClass = uic.loadUiType (qtCreatorFile)

класс MyApp (QtGui.QMainWindow, Ui_MainWindow):

000 Ui_MainWindow.

000: Qi_MainWindow. __init __ (self)

self.setupUi (self)

if __name__ == «__main__»:

app = QtGui.QApplication (sys.argv)

window = MyApp ()

окно.показать ()

sys.exit (app.exec_ ())

Главное отметить строку 3:

qtCreatorFile = «» # Введите сюда файл.

qtCreatorFile = «» # Введите сюда файл.

Сюда вы добавляете ранее созданный файл. Загружается с помощью встроенной функции:

Ui_MainWindow, QtBaseClass = uic.loadUiType (qtCreatorFile)

Ui_MainWindow, QtBaseClass = uic.loadUiType (qtCreatorFile)

Давайте взглянем на код:

если __name__ == «__main__»:
app = QtGui.QApplication (sys.argv)
window = MyApp ()
window.show ()
sys.exit (приложение.exec_ ())

, если __name__ == «__main__»:

app = QtGui.QApplication (sys.argv)

window = MyApp ()

window.show ()

sys.exit (app.exec_ ())

Основной код создает новое приложение Qt Gui. Передача sys.argv обязательна, так как QT можно настроить из командной строки. Мы этого делать не будем.
Наконец, мы создаем класс с именем MyApp , который наследуется от библиотек Qt и инициализирует родительские классы:

класс MyApp (QtGui.QMainWindow, Ui_MainWindow):
def __init __ (сам):
QtGui.QMainWindow .__ __ INIT (Я)
Ui_MainWindow .__ __ INIT (Я)
self.setupUi (сам)

класс MyApp (QtGui.QMainWindow, Ui_MainWindow):

def __init __ (self):

QtGui.QMainWindow .__ init __ (self)

Ui_MainWindow .__ init __0002 (self)

Вам не нужно знать подробности этого кода.Просто используйте скелет и работайте над этим.

Возьмите этот файл pyqt_skeleton.py и переименуйте его в pyqt_first.py . Это потому, что мы не хотим редактировать исходный файл.
Первое, что нужно сделать, это добавить в код наш XML-файл, содержащий наш графический интерфейс. Замените эту строку:

qtCreatorFile = «» # Введите сюда файл.

qtCreatorFile = «» # Введите сюда файл.

с

qtCreatorFile = «tax_calc.ui»

qtCreatorFile = «tax_calc.ui»

Это загрузит наш файл графического интерфейса в память. Теперь ключевым виджетом в нашем графическом интерфейсе была кнопка. Как только вы нажимаете кнопку, что-то происходит. Какой? Нам нужно указать нашему коду, что делать, когда пользователь нажимает кнопку Calculate Tax .В функции __init__ добавьте эту строку:

self.calc_tax_button.clicked.connect (self.CalculateTax)

self.calc_tax_button.clicked.connect (self.CalculateTax)

Что это делает? Помните, мы назвали нашу кнопку c alc_tax_button ? (Это было имя объекта, а не текст, который на нем отображался.) clicked — это внутренняя функция, которая вызывается, когда (неожиданно) кто-то нажимает кнопку.Все виджеты QT имеют определенные функции, которые вы можете найти в Google. В последней части кода указано connect (self.CalculateTax) . Это говорит о том, что подключите эту кнопку к функции с именем self.CalculateTax , чтобы каждый раз, когда пользователь нажимает эту кнопку, вызывалась эта функция.

Мы еще не написали эту функцию. Давай сделаем это сейчас.

Добавьте в класс MyApp еще одну функцию. Сначала рассмотрим всю функцию, а затем перейдем к деталям:

def CalculateTax (self):
цена = int (self.price_box.toPlainText ())
налог = (self.tax_rate.value ())
total_price = цена + ((налог / 100) * цена)
total_price_string = «Общая цена с налогом:» + str (total_price)
self.results_window.setText (total_price_string)

def CalculateTax (self):

price = int (self.price_box.toPlainText ())

tax = (self.tax_rate.value ())

total_price = price + ((tax / 100) * price)

total_price_string = «Общая цена с налогом:» + str (total_price)

self.results_window.setText (total_price_string)

Хорошо, давайте посмотрим на приведенный выше код построчно.

Нам нужно сделать две вещи: прочитать поле с ценой, прочитать поле с налогом и рассчитать окончательную цену. Давай сделаем это сейчас. Помните, мы будем называть объекты по именам, которые мы им дали (вот почему я просил вас не использовать общие имена по умолчанию, такие как box1 , поскольку это довольно скоро запутает).

цена = int (self.price_box.toPlainText ())

цена = int (self.price_box.toPlainText ())

Читаем наш price_box . toPlainText () — это внутренняя функция, которая считывает значение, хранящееся в этом поле. Кстати, вам не нужно запоминать все эти функции. Я просто погуглил что-то вроде «Qt Textbox read data», чтобы узнать, как называется функция, хотя вы начнете запоминать имена через некоторое время, поскольку они очень логично названы.

Считываемое значение представляет собой строку, поэтому мы преобразуем ее в целое число и сохраняем в переменной с именем price .

Далее читаем налоговую строку:

налог = (self.tax_rate.value ())

налог = (self.tax_rate.value ())

Опять же, value () — это функция для чтения из счетчика . Спасибо, Google.

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

total_price = цена + ((налог / 100) * цена)
total_price_string = «Общая цена с налогом:» + str (total_price)

total_price = цена + ((налог / 100) * цена)

total_price_string = «Общая цена с налогом:» + str (total_price)

Создаем строку с нашей окончательной ценой.Это потому, что мы выведем эту строку прямо в наше приложение:

self.results_window.setText (total_price_string)

self.results_window.setText (total_price_string)

В нашем results_window мы вызываем функцию setText () , которая выводит созданную нами строку.

Просто запустите файл, используя:

qt19

qt20

И вот.Простое введение в PyQt.

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

Хотите узнать больше об этом? Если да, то оставьте комментарий или свяжитесь со мной.

,

Leave a Comment

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