Питонистам это: Что такое «питонист» — значение слова

Содержание

Что нужно знать, уметь и понимать, чтобы не иметь проблем с поиском работы питонистом

Язык — лишь малая часть того, что вам нужно знать. Может быть около 5%, а то и меньше.

Эта статья повторяет и дополняет содержание моего выступления «Что отличает джуниора от сеньора или как питонисту не иметь проблем с поиском работы» на последнем

MoscowPython Meetup 39

. Многие обращались ко мне после выступления с вопросами и я обещал опубликовать статью на Хабре и обсудить в комментариях.

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



Ответы будут чуть ниже

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

Кто же приходит на митап?

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

Есть ли вообще проблема?

Далее на митапе я спрашивал есть ли у присутствующих проблема поиска работы. Для неуверенного большинства проблем нет, но соотношение, на вскидку, примерно 60/40 (из тех кто поднял руки). Так что тема определенно актуальна и статья многим может стать полезной.

Как устроиться работать джуниором?

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

Многие не знают и половины того, что надо и их берут только из-за «опыта» (зачастую бестолкового).

Короче не бойтесь и не считайте себя ни на что не способными, вооружайтесь знаниями, практикуйтесь и ничего не бойтесь!


Что нужно знать


  • Английский язык. Он нужен для чтения документации, примеров на stackoverflow и статьей, а так же чтобы клеить иностранок, когда будете ездите в отпуск. Многие в России имеют печальный опыт обучения языку в школе и в институте, но на самом деле, ребят, это действительно на 95% проблема системы образования, а на остальные 5% — отсутствие реальной необходимости в языке. Не существует людей (не считая немых и больных амнезией), которые не смогли бы научиться говорить на английском, а уж тем более свободно читать. Почти все вы уже умеете читать со словарем и для начала этого вполне достаточно.
  • POSIX-операционная система. Конечно с появлением docker и прочих vagrant’ов это стало не так критично как ранее, но все же работать на UBUNTU или MacOS на порядок комфортнее из-за нормальной нативной консоли (особенно под убунтой) с ее командами ls, cd, cat, ps, grep, kill, killall, vim, ssh, cp/scp и множеством других, используемых ежедневно в работе. Оболочка bash, переменные окружения, ssh и ключи доступа к удаленным машинам — все это используется весьма и весьма часто. Как изучать? Да никак особо, просто установите и пользуйтесь, постепенно само все изучится, ну можно статейки по отдельным командам посмотреть.
  • Python и его структуры данных. Структуры данных называются в питоне немного иначе, чем в других языках. Для изучения синтаксиса я настоятельно рекомендую самый обычный туториал на официальном сайте, он отлично написан — если не сильны в английском заодно и попрактикуете. Помните, если вы собираетесь работать питонистом, то английский нужен будет постоянно.
  • Библиотеки Python. Именно знание их в основном от вас будут ожидать работодатели. О существовании некоторых достаточно просто знать, а некоторые нужно знать хорошо. Django сейчас в тренде и хорошее знание этого фреймворка сильно упрощает поиск работы. Вкратце: с одним лишь знанием языка вы нафик никому не нужны. Нужно иметь представление о популярных библиотеках, а найти список таких можно просто полистав вакансии.
  • Форматы данных XML, HTML, JSON. Это форматы данных, без которых нынче никуда. Для изучения XML я рекомендую почитать документацию lxml (и попробовать все примеры оттуда), для HTML — htmlbook.ru, для json — хотя бы просто погуглите что это.
  • Протокол HTTP. Имхо, самое полезное в нем это знать статусы сообщений HTTP, что такое cookies, session, заголовки, тело и reason. Мне кажется статьи в википедии хватит для начала, но может кто подскажет хорошую статью?
  • Базы данных. Их можно изучать годами — настолько обширная тема и хорошее знание баз данных, умение оптимизировать структуру и запросы необходимы чтобы стать ведущим разработчиком с большой зарплатой. Но для начала вам нужен хотя бы минимум — уметь установить СУБД и знать что такое INSERT, UPDATE, SELECT, JOIN, GROUP BY для реляционных баз. Лично я рекомендую PostgreSQL, так как она хорошо поддерживает гео-данные, которые нынче в каждом втором стартапе. Помимо реляционных, вам надо знать, что есть ещё noSQL типа Mongo (и зачем они нужны) и key-value хранилища типа Redis.
  • (очень желательно) Javascript, jQuery и прочие AngularJS. Сейчас все больше сайтов уже не генерят HTML, а асинхронно обмениваются с сервером информацией и ее отображают. Надо понимать зачем это все и из этого вытекает следующий пункт.
  • (желательно) Архитектуры информационных систем. Фактически хорошее понимание архитектур вкупе с хорошим знанием баз данных делает вас сеньором. www.insight-it.ru — к сожалению мало обновляется последнее время, но даже то что там есть я нахожу крайне полезным.
  • (желательно) Еще один тренд — это асинхронное программирование. Это не является чем-то необходимым для того чтобы найти работу, но это может быть вектором для дальнейшего развития.

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

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

Постойте, а как же алгоритмы?

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


Что нужно уметь?


  • Читать чужой код — если не умеете, то фактически вы не умеете пользоваться существующими ресурсами и каждый раз будете пилить велосипед. Как правило это не эффективно (ну давайте может быть еще язык программирования каждый раз снова создавать под каждую задачу?). Со временем вы поймете, что иногда быстрее написать что-то свое, но по началу — старайтесь учиться у других. Даже если вы в итоге решите писать что-то свое, у вас будет уже хоть какое-то представление о том как надо или как не надо делать.
  • Владеть IDE — это и ускорение написания кода и возможности отладки, тэстирования кода, подсказки ошибок и недочетов, где вы не следуете гайдлайнам, множество полезных инструментов. Я рекомендую PyCharm или PyDev — они достаточно зрелые и имеют хороший функционал прямо из коробки.
  • Сразу осваивайте и пользуйтесь стандартными инструментами
    — virtualenvwrapper, pip. Недавно наткнулся на pyenv — имхо тоже хорошая штука.
  • Немножко сисадминить — это пересекается со знанием ОС, рано или поздно надо все-таки уметь настраивать софт на сервере где ваше приложение/сайт будет жить (Дима, привет).
  • Совсем забыл сказать на митапе и ребята подсказали: конечно же системы контроля версий — хотя бы только git, но не помешают и mercurial с svn — мало ли где с ними столкнетесь. НИКОГДА не используйте архивы и прочий PHP-стайл. Владение git должно быть чуть ли не выше, чем самим Python, если вы устраиваетесь на работу в команду. Посмотрите github.com, bitbucket.org.
  • (желательно) освоить такие средства как vagrant, docker, puppet/chef/ansible, fabric
    — если у кого в этом пробелы, советую Moscow Python Conf, я вот сам пойду, если будет возможность.

Все это — постоянно используемые в работе инструменты, без знания которых даже отлично владея языком вы будете обузой для команды, потому что либо вы будете медленно работать (не используя IDE), либо постоянно писать велосипеды не используя существующие решения (не читая чужой код; особенно извращенная форма — не изучив даже код своих коллег в рамках проекта), будете испытывать проблемы с переходом на новые версии используемых библиотек (не используя virtualenvwrapper), дергать других при любой задаче связанной с сервером (не имея элементарных навыков админа), создавая лютый зуд в заднице коллег косячными коммитами (не зная git). Вас проще будет убить, чем прокормить в команде, а ваша эффективность может быть даже отрицательной, потому что другие могут тратить время на исправление ваших косяков и помощь вам. Поэтому потратьте немного времени, освойте эти инструменты, это тоже совсем-совсем не долго.

Что нужно понимать

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


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

Язык — лишь малая часть того, что вам нужно знать. Может быть около 5% или даже меньше.

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

Мечта работодателя Что от вас требуется
делегирование — поставил задачу и её сделали правильно без твоего участия не боитесь брать на себя ответственность и достаточно компетентны
скорость разработки (основное преимущество питона) владеете языком, знаете сторонние библиотеки и понимаете, что скорость разработки очень важна
надежность системы тэстирование собственного кода насколько это возможно или требуется
поддерживаемость (еще одно преимущество синтаксиса и рекомендаций питона) знакомство с гайдлайнами (pep, import this) и по возможности следование им
эффективность системы знакомство со свежими технологиями, библиотеками и другими приложениями
эффективность разработчика заинтересованы в проекте. Тут я советую действительно выбирать проекты, которые интересны.
предсказуемость, возможность планирования ваши планы на ближайший год ясны


Интересно что он ей такое сказал на самом деле?

Советы


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

    Приехали мы как-то в баню, и там чувак вениками орудует. А я веников 3 года не видал — в Азии туго с ними. Ну я ему “ого, братюня, фартануло тебе, где ты веников раздобыл?”. Он мне: “да вот привез с собой из России, че хочешь я тебя тоже напарю?”. Ну я не дурак отказываться, конечно. Пообщались с ним, нормальный такой чувак. Ну и разъехались по домам. Через пару недель опять приезжаем — там он же, опять с веником, стали снова общаться, он меня и спрашивает, мол, “а ты вообще чем занимаешься?”. Я говорю ну так-сяк, вот коворкинг у меня свой, а в свободное время на питоне программирую. Он “да ладно? Мне как раз питонщики нужны”. Оказался он основателем небезызвестной компании и я до сих пор с ним работаю.


    Помимо собеседований рекомендую играть в мафию (только не по турнирным правилам, а таким, когда возможна дискуссия, но чтобы без балагана — это очень круто тренирует нервы и навык общения), ходите на хакатоны, митапы, конференции. Не пропустите, кстати, Moscow Conf, такие конференции даже не каждый год бывают — это вам не митап двухчасовой, а реально можно за день наобщаться с опытными ребятами, позадавать вопросы спикерам.
  2. Навык продаж. Этот навык позволяет иметь ЗП выше рыночной. Вряд ли конечно вы побежите работать продавцом, но если у вас есть такой опыт, то считайте это плюсом. Антипример:

    Жил у нас в коворкинге один парень — крутейший JS-программист, уровня сеньора с зп 120000+. Работает за 80, потому что неловко себя чувствует на собеседованиях, не может себя правильно позиционировать.


  3. Привирайте. Слегка, ну может процентов на 20, не больше. Например, можно сказать, что вы знаете что-то, о чем вы всего лишь слышали или слегка знакомы. Правда жизни

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


  4. Чаще меняйте работу. Профессиональный рост на новом месте работы длится обычно порядка 2-3 месяц, изредка до полугода, потом начинается рутина и мало нового. Чтобы этого избежать, надо как можно чаще менять место работы (примерно раз в полгода-год). Как вариант — переходить на другую должность или в другой проект в рамках одной крупной компании, но если вы засиделись на одной позиции уже год и никаких изменений не предвидится — смело уходите. Исключения

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


    UPD Этот пункт вызвал много споров в комментариях. Дело в том, что вас нанимают не за карму, а за ваше умение делать работу. Сидение 5 лет в одной конторе и делание одного и того же все это время сделает из вас мастера делать это одно и то же, но не сделает вас действительно хорошим специалистом. Умение решать любую задачу — это ценно, для этого вам надо сталкиваться с как можно большим количеством различных задач. Не надо впадать в крайности и менять работу каждые 2 месяца — это конечно чересчур (но и бояться уйти с говноработы где вам реально не нравится тоже не стоит — уходите и не парьтесь). В конечном итоге удержать вас в проекте — это головная боль работодателя, а не ваша. Это немного цинично, но это лишь совет и вам самим решать. Просто имейте ввиду — если вы уйдете с работы где как вы чувствуете у вас остановилось развитие или тем более вам что-то не нравится — скорее всего будет хорошей идеей.
  5. Изучайте смежные отрасли, новинки, новые библиотеки. Дедушка Ленин завещал ведь.
  6. Работайте за валюту напрямую на иностранных работодателей. Хорошим специалистам — на toptal.com, попроще — на upwork.com. С хорошим английским переехать в США, Австралию, Германию и прочие Великобритании дело вообще не хитрое. как я английский выучил

    Сперва я 9 лет изучал английский в школе, потом 3 года в институте и уже мог разве что читать и переводить со словарем. Потом я несколько лет оттачивал навык чтением документации, но сказать сложнее «how much for coconut» получалось с трудом. Первым действительно эффективным шагом был просмотр видеоуроков Дмитрия Петрова «Полиглот» с канала Культура, следующим шагом — практика общения с иностранцами в нашем коворкинге на Пхукете, ну а совсем легко стало после женитьбы на филиппинке. Кроме всего прочего один мой знакомых открыл школу английского с уникальным методом, который позволяет за месяц-два обучиться, правда это на Пхукетике опять же.


  7. Идите вообще на воркшоп. В США это нормальная практика — окончив школу (даже не вуз, представьте себе) пойти отучиться 2-3 месяца на воркшопе и всё — ты уже востребованный специалист, который без труда найдёт высокооплачиваемую работу наравне с выпускниками вузов и с опытом работы. Это мне рассказал один молодой-парень, американец, который жил у нас в коворкинге и прошёл именно такой путь. У нас в России такой практики пока, к сожалению, нет (чаще это трата 5 лет в вузе, просто курсы синтаксиса языка, который, как я надеюсь вы поняли — лишь малая часть того, что нужно знать). После митапа у меня возникла идея организовать воркшоп, но в конце октября я уже улетаю обратно в Азию и просто не успею провести его здесь. Поэтому если есть желающие уехать на зимовку вместе с нами, а заодно научиться всему тому, что я тут написал — пишите в личку, что-нибудь придумаем.

UPD: В комментариях выразили мнение, что эта статья относится только к веб-разработке на питоне. Это не совсем так, просто веб-фреймворк Django, который я советую к изучению является самым востребованным на данный момент в чем легко можно убедиться. Вы можете запросто выбрать другое направление и большая часть статьи так же останется актуальной, но легко ли вам будет найти работу — я не знаю. Более того, совет про изучение других популярных библиотек именно на то и нацелен, чтобы вы не ограничивались только лишь Django и расширяли свои знания по другим направлениям.

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

Что нужно уметь, чтобы работать питонистом

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

Какие требования предъявляются к разработчику-питонисту

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

  • Умения работать с чужим кодом. Питонисты редко работают соло. Обычно приходится вести в разработку в команде, иметь дело с кодом, оставшимся в наследство от других разработчиков и пользоваться наработками сообщества (последним Python особенно отличается). Если чужой код ставит вас в тупик, больших успехов в Питоне добиться удастся вряд ли;
  • Умения работать с фреймворками для веб-разработки (в первую очередь Django и Flask, однако возможны и другие требования). Веб-разработка – одна из приоритетных областей применения Python, и эти фреймворки используются в ней практически повсеместно;
  • Знания Python Между второй и третьей версиями Питона существует довольно много отличий, и несмотря на то, что знакомство со старыми версиями не помешает (например, чтобы понимать, как работают более старые приложения), именно Python3 сейчас является нормой;
  • Знания английского языка, хотя бы на базовом уровне. Это нужно не только для того, чтобы повышать квалификацию и быть в курсе того, что происходит с языком (большая часть полезных материалов появляется изначально на английском, и кроме того, это основной язык общения сообщества питонистов в целом), но и потому, что на английском основан синтаксис самого Питона;
  • Понимания математической статистики;
  • Опыта работы с командной строкой Linux.

Что дополнительно повышает шансы разработчика-питониста на хорошую зарплату

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

Берлога питониста — О блоге

Привет! Меня зовут Константин. Добро пожаловать в мой блог — Берлога питониста! В программировании я уже больше 17 лет! Работал с несколькими языками программирования: Python, Java, C#.

За это время решал огромное количество бизнес-задач на базе платформы «1С:Предприятие».

Сейчас я — руководитель и собственник IT-компании, поэтому профиль задач несколько изменился. Но программирование — это моя страсть, которая и привела к появлению этого блога. Ключевая тема в нем — это, разумеется, Python. Мне безумно нравится философия этого языка, его функциональность. А в связке с обширной коллекцией фреймворков и библиотек этот язык программирования подходит для решения почти любой задачи.

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

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

О чем еще берлога питониста?

Кроме ключевой темы — языка Python, я подготовил еще несколько интересных рубрик, связанных с обзорами. Это обзоры игр и книг. Нет, это не блог для игроманов, но, если вы любите немного отвлечься и поиграть в отличные игры, которые помогают переключиться — у меня для вас есть отличные обзоры! Я читаю достаточно много книг, поэтому буду публиковать обзоры на самые интересные из них. Кроме того, для некоторых из них я делаю ментальные карты. Это поможет вам сэкономить время.

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

Надеюсь, что вы будете вновь и вновь обращаться к этому блогу для того, чтобы узнать что-то новое!

Подписывайтесь на telegram-канал, чтобы не пропускать новые публикации.

Топ-10 полезных книг для питонистов-новичков — Даниил Ганопольский на vc.ru

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

{«id»:382850,»type»:»num»,»link»:»https:\/\/vc.ru\/u\/1126243-daniil-ganopolskiy\/382850-top-10-poleznyh-knig-dlya-pitonistov-novichkov»,»gtm»:»»,»prevCount»:null,»count»:3,»isAuthorized»:false}

{«id»:382850,»type»:1,»typeStr»:»content»,»showTitle»:false,»initialState»:{«isActive»:false},»gtm»:»»}

{«id»:382850,»gtm»:null}

1428 просмотров

1. Э. Мэтиз «Изучаем Python». Книга подойдёт тем, кто никогда не занимался программированием, но интересуется разработкой приложений на Python 3, визуализацией данных и разработкой игр. Просто, по делу, без лишних слов. Примеры задач в книге – начиная от «Hello world», заканчивая созданием сайта на Django3.

2. Б. Любанович «Простой Python». Крутое пособие, в котором детально расписаны стандартные библиотеки Pythonи его основы. Структура книги стандартная, состоит из двух частей – теоретической и практической. Очень хорошо подойдёт тем, кто хочет научиться работать с базами данных и сетями.

3. М. МакГрат «Python. Программирование для начинающих». Хочешь создавать свои проги на Pythonи разбираться в ключевых моментах этого языка? Тогда книга МакГрата – лучший самоучитель для тебя в этих вопросах. Также это твой вариант, если ты не любишь занудства

4. М. Лутц «Изучаем Python». Автор книги даёт информацию в полном объёме. Она регулярно переиздаётся и адаптируется под свежие версии Python. Тут можно найти почти всю информацию, связанную с Python, например, о модулях, функциях, инструментарии.

5. С. Читлур «Укус Питона». Крутой учебник большим количеством наглядных примеров. Если тебе не нравится застревать на теории и не терпится перейти к практике, то смело обращайся к этому пособию. Автор очень простым языком объясняет, что такое Python и с чем его едят.

6. Дж. П. Мюллер «Python для чайников». Отличное пособие для тех, кто не имеет представления об этом языке. Сначала Мюллер рассказывает вам о среде Python(установка в разных операционных системах, работа с Anaconda). Потом ты приступишь к изучению базовых понятий языка. Есть отдельная глава, посвящённая циклам. Также в книге есть справочный материал и иллюстрации для лучшего понимания.

7. Н. Прохоренок, В. Дронов «Python 3. Самое необходимое». Здесь ты найдёшь всё самое нужное для питониста-новичка: базовый синтаксис, основы ОПП, стандартная библиотека, работа с модулями. Материал изложен в доступной форме. Примеры этой книги помогут разобраться в концепциях и написании кода.

8. Т. Гэддис «Начинаем программировать на Python». Как и во всех книгах для новичков, речь идёт о всё базовом синтаксисе языка. Также есть темы объектно-ориентированного и функционального программирования. В пособии используется версия Python3.6.4. Для облегчения восприятия материала есть иллюстрации.

9. З. А. Шоу «Лёгкий способ изучить Python 3». Потрясающая книга для изучения основам языка и отработки знаний на практике. Подход к обучению такой: ты читаешь упражнения, переписываешь их без копипаста и запускаешь. Если обнаруживаешь, что ничего не работает, перечитываешь, исправляешь ошибки и снова запускаешь. В общем, спустя время тебя ночью разбуди, и ты выдашь весь базовый синтаксис.

10. М. Доусон «Программируем на Python». Автор рассказывает о Python на примере небольших текстовых игр. Здесь подробно говорится об основных возможностях языка, проектировании и написании приложении с немалым количеством кодовых строк.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

URL Shortener

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

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

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

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

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

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

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

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

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

Post-It Note

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

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

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

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

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

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

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

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

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

Викторина

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Контакты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем питонисту Bower? Питонисту нужен bowerer

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

Прежде всего, что такое

Bower

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

Например, ваше веб-приложение, которое, конечно, написано на Python, используют несколько клиентских библиотек, скажем, jQuery, Bootstrap, Ember и прочие, и вам нужно иметь возможность их установить, а в последующем и обновлять, как можно более просто. Желательно одной командой. А ещё хочется составить список всего нужного, запихнуть в файл, чтобы при необходимости также одной командой поставить/обновить всё это добро. Наверняка вы уже ощутили, что всё это вам знакомо по приложению

pip

. Так вот Bower выполняет сходные задачи, но для клиентских библиотек.

То есть, вещь хорошая, нужная. Даром, что этот менеджер написан на JavaScript, если хорошая — качаем, ставим.

И вот примерно на этом шаге приходит осознание, что Bower работает на

Node.js

. Не знаю кого как, а меня такое положение дел огорчает, ведь эта среда исполнения не маленькая — магабайт 40. И мне не то чтобы жалко, просто не ясно зачем вся эта красота, большей частью которой пользоваться я не собираюсь: на серверной стороне работает Питон, на клиенте — браузерный JavaScript.

И ещё грустнее становится, если залезть в код Bower и понять, что принцип работы довольно прост: нет никакого выделенного сервера с пакетами (такого как

PyPI

, например), работа ведётся прямо с

GitHub

; пожалуй самое сложное, что там можно увидеть — это создание графа пакетов и зависимостей с разрешением конфликтов.

В этой грусти некоторое время назад я начал прямое портирование кода этого пакетного менеджера на Python —

bowerer

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

async

и

await

.

К сожалению, времени на этот проект не хватает, поэтому сегодня я залил в репозиторий залежавшийся код и оставляю его в подвешенном состоянии. По ощущениям порт завершён процентов на 70. Удельный вес — около 90Кб. Это не 40Мб+ непонятно чего не понятно зачем.

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

Нам лишнего не надо.

Как реализовать стек в Python

Возможно вы что то слышали о стеках и задавались вопросом, что это такое? У вас есть общее представление об этом, но вам интересно, как реализовать стек в Python? Тогда вы пришли в нужное место!

В этой статье вы узнаете:

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

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

Что такое стек?

Стек — это структура данных, в которой элементы хранятся в порядке поступления. Его еще часто называют LIFO (Last-In/First-Out). Это отличается его от очереди, в которой элементы хранятся в порядке «первым пришел / первым обслужен» (FIFO).

Вероятно, проще всего понять стек, если вы представите сценарий использования, с которым вы, вероятно, знакомы: функция отмены (Undo) в вашем редакторе.

Давайте представим, что вы редактируете вашу программу на Python. Сначала вы добавляете новую функцию. Это добавляет новый элемент в стек отмены:

Вы можете видеть, что в стеке теперь есть операция Add Function. После добавления функции вы удаляете слово из комментария. Это также добавляется в стек отмены:

Обратите внимание, как элемент «Delete Word» помещается на вершину стека. Наконец, вы делаете отступ для комментария, чтобы он выстроился правильно:

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

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

Ваш редактор отменяет отступ, а стек отмены теперь содержит два элемента. Эта операция противоположна push и обычно называется pop.

Когда вы снова нажмете кнопку «Отменить», из стека выскочит следующий предмет:

Удалится элемент «Delete Word», оставляя только одну операцию в стеке.

Наконец, если вы нажмете Отменить в третий раз, то последний элемент будет вытолкнут из стека:

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

Реализация стека в Python

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

Мы посмотрим на следующие реализации стека:

  • list
  • collections.deque
  • queue.LifoQueue

Использование list для создания стека

Встроенная структура list, которую вы, вероятно, часто используете в своих программах, может использоваться и в качестве стека. Вместо .push() можно использовать .append() для добавления новых элементов в верхнюю часть стека, в то время как .pop() удаляет элементы в порядке LIFO:

>>> myStack = []

>>> myStack.append('a')
>>> myStack.append('b')
>>> myStack.append('c')

>>> myStack
['a', 'b', 'c']

>>> myStack.pop()
'c'
>>> myStack.pop()
'b'
>>> myStack.pop()
'a'

>>> myStack.pop()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
IndexError: pop from empty list

В последней команде вы можете видеть, что список вызовет IndexError, если вы вызовете .pop() в пустом стеке.

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

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

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

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

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

Использование collection.deque для создания стека

Модуль collection содержит deque, который полезен для создания стеков. deque переводиться как «колода» и означает «двусторонняя очередь».

Вы можете использовать те же методы для deque, которые мы видели выше для list, .append() и .pop():

>>> from collections import deque
>>> myStack = deque()

>>> myStack.append('a')
>>> myStack.append('b')
>>> myStack.append('c')

>>> myStack
deque(['a', 'b', 'c'])

>>> myStack.pop()
'c'
>>> myStack.pop()
'b'
>>> myStack.pop()
'a'

>>> myStack.pop()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
IndexError: pop from an empty deque

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

Зачем нужен deque если есть list?

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

Это отлично работает для нескольких операций, таких как индексация в списке. Так получение элемента по индексу myList[3] работает быстро, так как Python точно знает, где искать в памяти. Эта схема памяти также позволяет хорошо работать со срезами списков.

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

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

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

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

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

К счастью, вы редко будете выполнять случайную индексацию или использовать срезы в стеке. Большинство операций над стеком будут push или pop.

Операции .append() и .pop() с постоянным временем делают deque отличным выбором для реализации стека Python, если ваш код не использует многопоточность.

Python стеки и многопоточность

Стеки Python могут быть полезны и в многопоточных программах.

Два варианта, которые вы видели до сих пор, list и deque, ведут себя по-разному, если в вашей программе есть потоки.

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

Примечание. Если вам нужно освежить в памяти информацию о безопасности потоков и условиях гонки, ознакомьтесь с Введение в потоки в Python (An Intro to Threading in Python).

Однако, с deque немного иначе. Если вы прочтете документацию по deque, в ней будет четко указано, что обе операции .append() и .pop() являются атомарными, то есть они не будут прерваны другим потоком.

Так что если вы ограничитесь использованием только .append() и .pop(), то у вас не будет проблем с потоками.

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

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

Хорошо, если вы работаете с потоками, вы не можете использовать list для стека и, вероятно, не захотите использовать deque для стека, так как же вы можно построить стек Python для многопоточной программы?

Ответ находится в модуле очереди, queue.LifoQueue. Помните, как вы узнали, что стеки работают по принципу «последний пришел / первый вышел»? Ну, вот что означает «Lifo» в LifoQueue.

В то время как интерфейс для list и deque похожи, LifoQueue использует .put() и .get() для добавления и удаления данных из стека:

>>> from queue import LifoQueue
>>> myStack = LifoQueue()

>>> myStack.put('a')
>>> myStack.put('b')
>>> myStack.put('c')

>>> myStack
<queue.LifoQueue object at 0x7f408885e2b0>

>>> myStack.get()
'c'
>>> myStack.get()
'b'
>>> myStack.get()
'a'

>>> # myStack.get() <--- waits forever
>>> myStack.get_nowait()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python3.7/queue.py", line 198, in get_nowait
    return self.get(block=False)
  File "/usr/lib/python3.7/queue.py", line 167, in get
    raise Empty
_queue.Empty

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

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

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

Стеки Python: какую реализацию следует использовать?

В общем случае, вы должны использовать deque, если вы не используете многопоточность. Если вы используете многопоточность, то вам следует использовать LifoQueue.

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

Заключение

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

Теперь вы можете:

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

Оригинальная статья: Jim Anderson  How to Implement a Python Stack

Была ли вам полезна эта статья?


photos — Доступ к библиотеке фотографий на iOS — Документация по Python 3.6.1

Вы также можете добавлять новые изображения в библиотеку, изменять существующее содержимое на месте и удалять элементы.

Примечание

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

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

Чтобы начать работу с медиафайлами в вашей библиотеке фотографий, обычно требуется хотя бы один объект Asset . Вы можете получить все активы из библиотеки, используя функцию get_assets() , как показано ниже:

 # Получить последнее фото и показать его в консоли

импортировать фотографии
all_assets = фотографии.получить_активы()
последний_актив = все_активы[-1]
img = last_asset.get_image()
img.show ()
 
Активы

содержат только метаданные, поэтому для получения фактического изображения вам придется использовать функцию Asset.get_image() , как показано в примере выше. Изображение возвращается как объект PIL.Image . Если вместо этого вам нужен ui.Image , используйте Asset.get_ui_image() .

Активы организованы в коллекции, которые представлены в виде объектов AssetCollection .Коллекции могут быть обычными альбомами или смарт-альбомами, которые автоматически содержат ресурсы с определенными свойствами.

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

.
 # Получить самый старый снимок экрана и удалить его из библиотеки

импортировать фотографии
альбом = фотографии.get_screenshots_album()
скриншоты = альбом.активы
если бы не скриншоты:
    print('В вашей библиотеке нет скриншотов.')
еще:
    самые старые = скриншоты[0]
    если самый старый.can_delete:
        # Это автоматически покажет диалоговое окно подтверждения:
        самый старый.удалить()
    еще:
        print('Самый старый скриншот удалить нельзя')
 

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

Следующий фрагмент извлекает последний ресурс из «недавно добавленного» альбома, преобразует его в оттенки серого, а затем заменяет изображение.Редактирование можно отменить в приложении «Фотографии» или с помощью метода Asset.revert() .:

 # Получить последнюю фотографию и преобразовать ее в оттенки серого, сохранив редактирование на месте

импортировать фотографии
альбом = photos.get_recently_added_album()
последний = альбом.активы[-1]
если last.can_edit_content:
    img = last.get_image()
    оттенки серого_img = img.convert('L')
    grayscale_img.save('.edit.jpg', качество=90)
    last.edit_content('.edit.jpg')
еще:
    print('Актив недоступен для редактирования')
 

В предыдущих примерах ресурсы извлекались по индексу, но вы также можете просто отобразить диалоговое окно, позволяющее пользователю выбрать ресурс из сетки эскизов.Функция pick_asset() принимает список активов (или AssetCollection ) и возвращает выбранный актив. Это также позволяет множественный выбор. При вызове без параметров показывается альбом «Недавно добавленные».:

 # Показать диалоговое окно выбора изображения (с возможностью множественного выбора) и распечатать результат

импортировать фотографии
assets = photos.pick_asset(title='Выберите некоторые активы', multi=True)
печать (активы)
 

Использование Pythonista — Документация по Python 3.6.1

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

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

Библиотека скриптов

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

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

Чтобы удалить сценарии или переместить их в другую папку, нажмите кнопку Изменить или используйте перетаскивание. Удаленные скрипты перемещаются в специальную папку Trash , откуда их можно восстановить или удалить навсегда.

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

Наконечники:

  • Вы можете добавлять собственные шаблоны файлов, создавая файлы в папке «Шаблоны файлов».
  • Доступ к файлам из других приложений (или облачных провайдеров) можно получить из раздела «Внешние файлы». Pythonista поддерживает редактирование файлов из других приложений на месте, и вы также можете интегрировать целые папки (например, .грамм. репозиторий Git) из других приложений (например, из рабочей копии).
  • Библиотека скриптов поддерживает перетаскивание для перемещения файлов (требуется iOS 12+).
  • Вы можете добавлять файлы и папки в раздел «Избранное» для быстрого доступа из боковой панели.
  • Проведите пальцем вправо по файлу, чтобы открыть его в новой вкладке или пометить как избранный для быстрого доступа.
  • Если у вас подключена аппаратная клавиатура, вы можете перемещаться по библиотеке скриптов с помощью клавиш со стрелками (возврат для выбора).

Интерактивная подсказка

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

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

При вводе кода варианты завершения предлагаются автоматически.

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

  • Коснитесь заголовка консоли, чтобы переключить интерпретатор (2.7 или 3.x) или скопировать весь текст из вывода.
  • Кнопка (i) в верхнем правом углу переключает Инспектор объектов . Это позволяет визуально проверять переменные и их атрибуты, просматривая дерево иерархии объектов. Инспектор также может предварительно просматривать определенные типы изображений.
  • Нажмите и удерживайте кнопку «Очистить», чтобы сбросить глобальные переменные, импортированные модули и т. д.
  • Консоль можно отобразить в компактном виде непосредственно рядом с редактором, нажав кнопку «разделить экран».
  • Редактор

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

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

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

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

    Одной из очень полезных функций редактора является то, что он сам программируется. Вы можете использовать модуль редактора для замены текста, позиционирования курсор и т. д. Затем вы можете добавить свои собственные скрипты в меню действий («гаечный ключ»), чтобы вы могли запускать их прямо из редактора при работе над своим кодом.

    Нажмите кнопку Изменить в меню действий редактора, чтобы добавить собственные сценарии.

    Посмотрите документацию по редактору модуль для некоторых интересных примеров.

    Наконечники:

    • Коснитесь двумя пальцами, чтобы выбрать всю строку.
    • Цветовые значения (строки, например, '#ff00ff' ) можно редактировать с помощью визуального средства выбора цвета. Просто наведите курсор на значение цвета, чтобы отобразить образец цвета, коснитесь его, чтобы настроить цвет.
    • Нажмите кнопку (+) в правом нижнем углу (во время редактирования), чтобы вставить названия цветов, изображений, шрифтов или звуковых эффектов. В основном это предназначено для использования с модулями ui , scene и :mod:`PIL`(low), но также может быть полезно для веб-разработки.
    • Используйте пункт меню «Выделить все» после выбора слова, чтобы быстро увидеть все места, где, например, имя переменной используется в вашем скрипте.
    • Список функций, который появляется при нажатии на заголовок сценария, можно отфильтровать, просто набрав. Если клавиатура еще не видна, когда отображается список, вы можете перетащить вниз, чтобы отобразить поле фильтра.

    Внешние клавиатуры

    Если у вас есть внешняя клавиатура (например, Bluetooth), подключенная к вашему устройству iOS, вы можете перемещаться почти по всему Pythonista с помощью сочетаний клавиш.

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

    Наконечник

    В большинстве списков Pythonista поддерживает навигацию с помощью клавиш со стрелками, например. когда вы нажимаете Cmd+L, чтобы отобразить схему скрипта, вы можете перейти к функции с помощью клавиш вверх/вниз, подтвердив выбор с помощью введите .

    Общие сочетания клавиш (они работают во всех текстовых областях на iOS):

    • Команда + X — Вырезать
    • Command + C — Копировать
    • Command + V — Вставить
    • Команда + Z — Отменить
    • Command + Shift + Z — повторить
    • Command + A — выбрать все

    Некоторые сочетания клавиш Pythonista:

    • Команда + R — Выполнить
    • Command + L — Показать контур (вы можете перемещаться по контуру с помощью клавиш со стрелками вверх/вниз и возврата)
    • Command + D — Вставить фрагмент
    • Command + J — показать/скрыть панель консоли
    • Command + return — фокус на редакторе
    • Command + F — переключить поиск
    • Command + G — Показать следующий результат поиска
    • Command + Shift + G — Показать предыдущий результат поиска
    • Command + K — очистить вывод консоли

    Расширения приложений и ярлыки

    Pythonista содержит различные расширения приложений для интеграции с другими приложениями и частями iOS.

    Вы можете использовать расширение общего доступа для запуска скриптов в любом приложении, которое использует стандартный системный общий лист. Пользовательское расширение клавиатуры позволяет запускать сценарии в любом приложении с вводом текста. URL-адреса Pythonista можно использовать для автоматизации запуска сценариев из других приложений (например, из приложения «Ярлыки»).

    Подробнее: Расширения приложений и ярлыки

    ‎Pythonista 3 в App Store

    Pythonista — это полная среда сценариев для Python, работающая непосредственно на вашем iPad или iPhone.Он включает поддержку как Python 3.6, так и 2.7, поэтому вы можете использовать все усовершенствования языка в Python 3, сохраняя при этом версию 2.7 для обратной совместимости.

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

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

    Помимо изучения и практики Python, вы также можете использовать Pythonista для автоматизации частей iOS с расширениями приложений, например. для вызова скриптов непосредственно из стандартного общего листа практически в любом приложении.

    Особенности:

    >>> Мощный редактор кода с подсветкой синтаксиса, завершением кода, поддержкой сценариев и т. д.
    >>> Интерактивная подсказка с завершением кода, историей команд и поддержкой отображения изображений в выводе консоли
    >>> Интегрированный визуальный отладчик и инспектор объектов
    >>> Интегрированная проверка стиля PEP 8 с выделением проблем непосредственно в редакторе
    >>> Полная автономная документация с быстрым поиском непосредственно из редактора
    >>> Различные красивые светлые и темные цветовые темы, а также Редактор тем для создания собственного
    >>> Редактор пользовательского интерфейса для быстрого прототипирования
    >>> Включает в себя большую часть стандартной библиотеки Python и дополнительные модули для графики, звука и системных служб iOS (например,грамм. буфер обмена, контакты, напоминания, твиттер, пользовательский интерфейс...)
    >>> Matplotlib и NumPy для научных визуализаций
    >>> Множество других популярных сторонних модулей, например. запросы, BeautifulSoup, Flask, Bottle, SymPy и многое другое.
    >>> Множество включенных примеров для начала работы
    >>> Универсальное приложение для iPad и iPhone
    >>> Расширение приложения Share Sheet для запуска сценариев практически из любого приложения
    >>> Настраиваемая клавиатура с поддержкой сценариев для использования Python в любом приложении, которое редактирует текст

    Название "Pythonista" используется с любезного разрешения Python Software Foundation.

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

    ‎App Store: Pythonista 3

    Pythonista — это полная среда сценариев для Python, работающая непосредственно на вашем iPad или iPhone. Он включает поддержку как Python 3.6, так и 2.7, так что вы можете использовать все улучшения языка в Python 3, сохраняя при этом 2.7 доступны для обратной совместимости.

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

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

    Помимо изучения и практики Python, вы также можете использовать Pythonista для автоматизации частей iOS с расширениями приложений, например.грамм. для вызова скриптов непосредственно из стандартного общего листа практически в любом приложении.

    Особенности:

    >>> Мощный редактор кода с подсветкой синтаксиса, завершением кода, поддержкой сценариев и т. д.
    >>> Интерактивная подсказка с завершением кода, историей команд и поддержкой отображения изображений в выводе консоли
    >>> Интегрированный визуальный отладчик и инспектор объектов
    >>> Интегрированная проверка стиля PEP 8 с выделением проблем непосредственно в редакторе
    >>> Полная автономная документация с быстрым поиском непосредственно из редактора
    >>> Различные красивые светлые и темные цветовые темы, а также Редактор тем для создания собственного
    >>> Редактор пользовательского интерфейса для быстрого прототипирования
    >>> Включает в себя большую часть стандартной библиотеки Python и дополнительные модули для графики, звука и системных служб iOS (например,грамм. буфер обмена, контакты, напоминания, твиттер, пользовательский интерфейс...)
    >>> Matplotlib и NumPy для научных визуализаций
    >>> Множество других популярных сторонних модулей, например. запросы, BeautifulSoup, Flask, Bottle, SymPy и многое другое.
    >>> Множество включенных примеров для начала работы
    >>> Универсальное приложение для iPad и iPhone
    >>> Расширение приложения Share Sheet для запуска сценариев практически из любого приложения
    >>> Настраиваемая клавиатура с поддержкой сценариев для использования Python в любом приложении, которое редактирует текст

    Название "Pythonista" используется с любезного разрешения Python Software Foundation.

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

    Pythonista, это мощнее, чем вы думаете. : Python

    Пятизвездочное приложение для iOS, Pythonista, недавно было обновлено для iOS 7 и выглядит великолепно!

    Помимо внешнего вида, это потрясающее приложение с возможностью даже конвертировать и экспортировать ваши проекты в проекты Xcode для продажи в App Store! Это моя любимая функция, так как я сделал почти полное приложение, используя чистый Python (я расскажу вам, что это такое в конце).

    В комплекте все ваши любимые модули и даже несколько эксклюзивных!


      сцена импорта
      

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


      импортный холст
      

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


      импортировать звук, речь
      

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


      импорт фотографий
      

    Довольно простая концепция: импортируйте фотографии из фотопленки, как родное приложение iOS, и используйте их в своем приложении.


      уведомление об импорте
      

    Это было удивительно для меня, когда я впервые попробовал это, если вы создаете проект Xcode с использованием Pythonista, вы прекрасно проведете время с этим.


      импортный брелок
      

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


      импорт PIL
      

    PIL (Python Image Library) — еще один удивительный модуль, добавляющий возможности обработки фотографий.


      импорт буфера обмена
      

    Я понимаю, что это хорошо известный компьютерный модуль, но разве не здорово, что вы можете запустить скрипт и мгновенно получить что-нибудь из буфера обмена вашего iOS-устройства? Я не собираюсь лгать, единственное реальное применение, которое я нашел для этого до сих пор, — это скопировать URL-адрес Gist и иметь возможность импортировать его в Pythonista с помощью скрипта, который я нашел в Интернете.


      контакты импорта
      

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


      импорт... PRAW?
      

    Вы меня слышали, хотя это не модуль по умолчанию, я портирую его на Pythonista уже несколько дней и почти закончил. Для тех из вас, кто не знает, PRAW — это оболочка API Reddit, которая создала почти каждого бота на этом сайте.Это также чертовски хорошо при создании личного приложения Reddit для iOS с использованием Pythonista. Если кто-то захочет, я опубликую измененный исходный код (и как поместить его в вашу библиотеку с помощью взломанного устройства iOS или просто как вызвать его из папки в приложении), как только я устраню некоторые из его ошибок совместимости, которые не полностью зависит от python (мелкие вещи, такие как update_checker).


    Вот страница документации для других модулей, не относящихся к iOS, но очень удобных.

    Я ждал, чтобы сказать вам цену в конце, потому что она такая потрясающая, я надеялся, что вы посмотрите на нее, прежде чем судить.Приложение стоит 6,99 долларов, но стоит каждой копейки. 100/100, рекомендую.

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

    РЕДАКТИРОВАТЬ: мне пришлось исправить ссылку на Документы.

    PythonistaCafe — взаимное обучение для разработчиков Python

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

    Думайте об этом как о клубе взаимного совершенствования питонистов:

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

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

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

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

    PythonistaCafe создано на платформе частного форума, где мы задаем вопросы, получаем ответы и делимся прогрессом:

    Каждый день мы обсуждаем широкий спектр вопросов по программированию, советы по карьере и другие темы:

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

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

    Мы познакомим вас и проведем вас по пути , чтобы вы могли стать ценным членом этого сообщества :

    Фотография выше была сделана во время встречи участников PythonistaCafe на PyCon US в Кливленде.

    Вот что некоторые из наших членов говорят о Кафе :

    PythonistaCafe — клуб взаимного совершенствования для энтузиастов Python.

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

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

    №1. Реальные люди, реальные взаимодействия

    Цель PythonistaCafe — наладить настоящие человеческие связи между энтузиастами Python. Независимо от того, изучаете ли вы в настоящее время программирование на Python или уже являетесь признанным разработчиком, цель состоит в том, чтобы вырастить целеустремленное и полезное сообщество единомышленников.

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

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

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

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

    №2. Будьте превосходны друг с другом

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

    В бессмертных словах Билла и Теда: "Будьте добры друг к другу!"

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

    №3. Давайте расти вместе

    Освоение Python — это марафон, а не спринт.

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

    PythonistaCafe — это благоприятная среда для обучения и развития ваших навыков, а также для обсуждения и обмена идеями о Python и разработке программного обеспечения.

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

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

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

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

    С тех пор как я запустил dbader.org в 2012 году, он превратился в учебный ресурс Python, который ежемесячно посещают более 200 000 разработчиков. Я также являюсь главным редактором Real Python, который получает более миллиона просмотров страниц в месяц, я веду еженедельную электронную рассылку новостей о Python, на которую подписано 100 000 человек, и канал YouTube с учебными пособиями по Python, который ежемесячно посещают тысячи зрителей.

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

    PythonistaCafe — мой новый дом. Каждую неделю я получаю массу писем с просьбами о программировании или советом по карьере. И, честно говоря, за всеми сложно уследить.

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

    Присоединиться к PythonistaCafe:

    Отлично, будем рады видеть вас на борту! Членство в PythonistaCafe возможно только по заявке. Чтобы начать процесс подачи заявки, нажмите кнопку ниже:

    Мне нужна дополнительная информация »

    «Как раз такое сообщество, на которое я надеялся»

    " Я люблю форумы. Это именно то сообщество, на которое я надеялся, - позитивное, дружелюбное, полезное и ободряющее.

    Это даже вдохновило меня пойти на PyCon в мае, так как похоже, что многие из нас там будут!"

    Катрина Дюранс Недавняя карьера

    «Мое путешествие по PythonistaCafe было потрясающим»

    «Я присоединился к PythonistaCafe, потому что какое-то время следил за блогом Дэна Бадера, а затем за его видео на YouTube, которые послужили отличным источником для расширения моих навыков Python.

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

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

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

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

    Рипудаман Флора Разработчик программного обеспечения в Ciena

    "Сообщество очень гостеприимное"

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

    На форуме присутствуют различные уровни навыков, и на каждом уровне навыков есть люди, которые специализируются в различных областях, таких как ГИС, общая веб-разработка и т. д.

    Я даже учусь, следя за чужими дискуссиями, которые «выше моей головы».

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

    Проверьте это, когда у вас будет время. Удачи!"

    Билл Арбакл Сертифицированный генеральный оценщик и Pythonista

    Где находятся ваши участники?

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

    Что нужно для подачи заявки на членство?

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

    Почему это платное сообщество?

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

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

    Кроме того, присоединение к PythonistaCafe — это также способ получить прямой доступ ко мне (Дэну), чтобы получить помощь в решении проблемы с Python или получить совет, в каком направлении двигаться.Я проверяю форумы и отвечаю на темы и вопросы ежедневно. Членство в PythonistaCafe заполнит пробел между моим разовым обучением Python (курсы и книги) и бронированием коучинга 1:1. Ваш членский взнос также используется для оплаты хостинга, заработной платы наших менеджеров сообщества и текущего обслуживания.

    Сколько стоит членский взнос?

    Членский взнос составляет 49 долларов США в квартал.

    Есть еще вопрос?

    Отлично! Отправьте электронное письмо Дэну по адресу [email protected]ком

    Использование iPad для Data Science в 2021 году! | Дэвид Хандли

    Изображение, сделанное автором iPad с помощью приложения Juno

    Проверка некоторых приложений для поддержки вашего пути обучения науке о данных на iPad

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

    На мой взгляд, iPad, безусловно, лучшая потребительская машина.Независимо от того, смотрите ли вы свое любимое шоу на Netflix или просматриваете веб-страницы, iPad — это лучший персональный опыт с большим экраном, который не является полноценным ноутбуком. Но следует признать, что iPad всегда не хватало того, что делало бы его действительно хорошей машиной для производства.

    Время шло, Apple постепенно добавляла все больше и больше функций, чтобы сделать iPad все более и более производственной машиной. От добавления поддержки клавиатуры до возможности действительно приятного графического дизайна с помощью Apple Pencil — iPad все дальше и дальше проникает на территорию настоящей замены ноутбука.На самом деле, до того, как я стал студентом по науке о данных в 2018 году, было время, когда я полностью отказался от своего ноутбука в пользу исключительно iPad. Конечно, в начале 2019 года мне пришлось быстро купить себе новый ноутбук, так как стало ясно, что он понадобится мне для работы с данными.

    Но на дворе январь 2021 года, и Apple продолжает делать все возможное, чтобы iPad стал больше серийной машиной. Благодаря новаторской поддержке использования курсора в iOS 14 для запекания трекпада в их последней клавиатуре iPad, мне теперь любопытно пересмотреть, насколько жизнеспособным является iPad как машина для обработки данных.В оставшейся части этого поста мы увидим, как мы можем использовать iPad в области науки о данных, и дадим окончательный вердикт о том, насколько полезен этот опыт.

    Без лишних слов, приступим!

    (О, и еще кое-что… Я на 100% знаю, что вы определенно можете обойтись без использования iPad в качестве рабочей машины, если вы используете облачные сервисы, такие как AWS или GCP, но это похоже на мошенничество. Этот пост будет охватывать аппаратное обеспечение, программное обеспечение и приложения iPad для работы, не зависящей от облачных вычислений.)

    Изображение сделано автором

    Думаю, можно с уверенностью сказать, что любой iPad, выпущенный за последние два года, обладает достаточно высокой производительностью, чтобы соперничать с большинством обычных ноутбуков. Мы вернемся к этому позже с нашими приложениями, но использование приложений для загрузки наборов данных из CSV и их изучение с помощью Pandas было очень быстрым. Лично я использую 16-дюймовый MacBook Pro для своей повседневной работы инженером по машинному обучению, а для работы с Python я бы сказал, что мой iPad Pro так же быстр, как полноценный MacBook Pro.

    Но мы не можем игнорировать огромный недостаток: iPad сам по себе является большим сенсорным экраном. Использование виртуальной клавиатуры и использование пальца в качестве курсора — очень неуклюжий опыт. (Не говоря уже о том, что виртуальная клавиатура занимает массу ценного пространства на экране.) Прошло некоторое время, когда iPad добавил поддержку физических клавиатур, и это очень помогло. Летом 2020 года Apple официально добавила поддержку курсора в iOS 14, чтобы использовать мыши с поддержкой Bluetooth и многое другое. Опять же, это был еще один огромный шаг вперед в использовании iPad в качестве производственной машины, но эти дополнительные возможности не дешевы.

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

    Снимок экрана, сделанный автором видео Medium, Pythonista и PIP

    Хотя Apple добилась больших успехов в том, чтобы сделать iOS более привлекательной для производственных клиентов (даже недавно переименовав iOS на iPad в iPadOS), в основе ее по-прежнему лежит iOS.Это в конечном счете ограничено в некоторых вещах, которые я делаю на обычном ноутбуке, и я, к сожалению, никогда не смогу по-настоящему заменить что-то вроде моего рабочего ноутбука на iPad. А именно, я не могу заниматься такими вещами, как работа с командной строкой и инструментами командной строки, сборка образов Docker и прочее.

    Но это не значит, что мы в полной растерянности. Мы все еще можем делать много интересных вещей, которые мы рассмотрим в разделе приложений, но, оставаясь на базовом уровне iOS, есть несколько вещей, на которые стоит обратить внимание. Во-первых, это файловая система iOS.Это совсем не то, что мы ожидаем от традиционного ноутбука, но, по крайней мере, Apple добавила свой собственный вариант несколько лет назад. Это здорово, так как многие приложения теперь могут использовать одни и те же файлы во всех приложениях, как если бы вы использовали любой файл на традиционном компьютере. Кроме того, включение Apple iCloud Drive упрощает синхронизацию файлов, над которыми вы работаете, между всеми вашими устройствами Apple. (Конечно, у последнего есть небольшая премия, если вы работаете с действительно большими файлами.) И было бы упущением упомянуть очень приятный пользовательский интерфейс для параллельных приложений!

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

    Снимок экрана сделан автором

    Хлеб с маслом всей экосистемы iOS находится в App Store, и, к счастью, некоторые замечательные люди создали несколько отличных приложений, чтобы помочь со всем процессом разработки кода и науки о данных. Мы даже расскажем, как эти приложения могут работать вместе, и даже с момента вашей работы на GitHub, но я должен быть на 100% прозрачным: это не совсем простой процесс. Со временем вы сможете привыкнуть к этому, как и я, но это определенно не так просто, как при использовании традиционного компьютера.

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

    Juno для iOS

    Скриншот, сделанный автором Juno для iOS

    (Цена: $14,99, Ссылка в App Store )

    Само собой разумеется, что использование Jupyter для таких вещей, как исследовательский анализ данных и визуализация данных является большим преимуществом, и Juno приносит именно это. Juno — это приложение, которое позволяет вам запускать интерфейс ноутбука Jupyter, который действительно работает с ядром Python и даже некоторыми пакетами, такими как Pandas и Scikit-Learn.Как упоминалось ранее, такие приложения, как Juno, теперь могут напрямую взаимодействовать с файловой системой iOS, поэтому вы можете легко загрузить набор данных из чего-то вроде Kaggle и напрямую работать с ним в Juno. Ницца!

    Юнона, к сожалению, не лишена недостатков. Будучи построенным поверх iOS, он не может запускать традиционные команды оболочки. Кроме того, хотя вы можете установить некоторые дополнительные пакеты из PyPi, они должны быть написаны исключительно на Python. Если они написаны не только на Python, их нельзя загрузить в Juno.(Например, для прозрачности модели я мог бы просто скачать LIME, но не SHAP. Поймите сами.) Juno также может быть немного неуклюжей при навигации по файловой системе, но в конечном итоге я думаю, что Juno — отличное приложение, и я с нетерпением жду возможности увидеть его. как он продолжает строиться с течением времени.

    Pythonista 3

    Снимок экрана, сделанный автором Pythonista 3

    (Цена: 9,99 долл. США, Ссылка в App Store )

    Работать в Jupyter — это здорово, но когда дело доходит до формализации кода для обучения и выводов нам действительно нужно выйти за пределы мира Jupyter.К счастью, Pythonista — отличная IDE на основе Python для iPad, которая нам подходит. Как и Juno, он также легко синхронизируется с файловой системой iOS, поэтому вы можете хранить как свои записные книжки Jupyter из Juno, так и сценарии Python из Pythonista в одном месте. Pythonista также поставляется с некоторыми действительно классными примерами того, что вы можете сделать в приложении, поэтому ознакомьтесь с ними, чтобы найти интересные идеи, которые вы можете рассмотреть в своих следующих исследованиях данных.

    Рабочая копия

    Снимок экрана, сделанный автором рабочей копии

    (Цена: бесплатно для основных функций, 19 долларов США.99 для премиум-функций, Ссылка в App Store )

    Помните, я говорил, что вы можете сохранить свою работу обратно на GitHub? Это то, о чем это приложение. Так же, как Juno и Pythonista, рабочая копия может напрямую обращаться к файловой системе iOS для создания репозитория Git, который можно синхронизировать с GitHub. (Или Filelocker, или GitLab, или что-то еще!) Это простое приложение, но очень приятное дополнение для работы на iPad. Между этими тремя приложениями и файловой системой iOS теперь вы можете совместно работать из одного места на iPad, которое можно легко синхронизировать с репозиторием исходного кода.Ницца!!

    Конечно, я должен упомянуть небольшой недостаток: пользовательский интерфейс. Назовите меня сумасшедшим, но я на самом деле люблю использовать командную строку, а ее явно нет из-за зависимости iPad от iOS. В рабочей копии есть пользовательский интерфейс для выполнения этих традиционных команд Git, но… над ним нужно немного поработать. Хорошей новостью является то, что основная функциональность присутствует, поэтому, если разработчики этого приложения действительно смогут оптимизировать свой пользовательский интерфейс, я думаю, что это приложение может сиять даже больше, чем сейчас. Но независимо от пользовательского интерфейса, он все еще достаточно хорош, чтобы я все еще использовал его для своей работы.

    Почетные упоминания

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

    Textastic (Цена: $9,99) : Textastic — самое популярное приложение для кодирования в App Store, поскольку оно отлично справляется с подсветкой синтаксиса и другими функциями для многих языков.Но поскольку я в основном работаю на Python, мне не нужно использовать это приложение поверх Juno или Pythonista. Тем не менее, приятно иметь его для таких вещей, как редактирование файлов уценки.

    GitHub (цена: бесплатно) : это приложение появилось сравнительно недавно для поддержки популярного репозитория исходного кода. Мне нравится использовать GitHub для демонстрации всей моей личной работы, но приложение для iPad не является «обязательным» в моей книге. Лично я не сотрудничаю с несколькими людьми на GitHub, но в таких сценариях это кажется более полезным.И поскольку это бесплатно, почему бы не скачать его?

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

    Итак, мы, наконец, подошли к вопросу, которого все ждали, а именно: можем ли мы, наконец, использовать только iPad для работы с данными? Неудачный ответ, в конечном счете, нет.

    Написать ответ

    Ваш адрес email не будет опубликован.