Python freelance: Python Jobs for November 2022

Как стать фрилансером Python и заработать 1000 долларов на стороне? [Пошаговое руководство] – Finxter

3/5 — (4 голоса)

Не хотите читать всю статью? Вот краткое изложение шагов:

  1. Мотивация: Посмотрите бесплатное видео о современном состоянии фриланса на Python (откроется в новой вкладке).
  2. Обучение : Достичь уровня фрилансера Python (~ 40-80 часов).
  3. Уверенность : завершите 3 заархивированных проекта Python для обучения и чтения книг по бизнесу, таких как «Выход из крысиных бегов с Python» (Amazon).
  4. Платформа : Создайте учетные записи на Upwork и Fiverr.
  5. Доверие : Получите 5-звездочный рейтинг за небольшие проекты Python за 15 долларов.
  6. Шкала : Увеличьте свою почасовую оплату.
  7. Совет профессионала : Создайте личный веб-сайт и привлекайте на него платный трафик.

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

А если вы серьезно относитесь к карьерному росту на следующем уровне, присоединяйтесь к моему БЕСПЛАТНОМУ вебинару (в блоге Finxter) «Как создать высокодоходный навык Python», на котором я точно покажу вам, как я пошел от 0 долларов до полного дохода и выше — в качестве внештатного разработчика Python.

Прежде чем мы начнем, давайте ответим на важный вопрос: стоит ли заниматься Python фрилансом? Я собрал плюсы и минусы из разных мест в Интернете (например, здесь) и добавил свой собственный опыт в сфере фриланса — как в качестве клиента, так и в качестве фрилансера Python.

Вы хотите развить навыки всестороннего профессионала Python , получая за это деньги? Станьте фрилансером Python и закажите книгу «Выход из крысиных бегов с Python » на Amazon ( Kindle/Print )!

Не теряя времени, давайте углубимся в 7 шагов, чтобы стать фрилансером Python.

Содержание:

  1. Сколько денег ($$$) вы можете заработать в качестве фрилансера Python
  2. Как обрести уверенность в том, что вы можете принести пользу на рынке?
  3. Как начать изучение основ Python?
  4. Как стать независимым от фриланс-платформ?
  5. Как стать привлекательным фрилансером?
  6. Как найти практические проекты Python для обучения?
  7. Когда прекратить обучение и начать делать настоящие проекты Python?
  8. Где лучше всего начать заниматься Python фрилансом?

1. Сколько денег ($$$) вы можете заработать, работая фрилансером Python?

Будучи разработчиком Python, вы можете рассчитывать на заработок от 10 до 80 долларов в час при средней зарплате в 51 доллар (источник). Я знаю, что вариация потенциального заработка высока, но таково же и качество фрилансеров Python в дикой природе. Возьмите среднюю заработную плату в качестве отправной точки и добавьте +/- 50%, чтобы учесть ваш уровень знаний. В этой статье блога я обобщил все заслуживающие доверия источники в Интернете о том, сколько вы можете заработать, работая программистом на Python. Ключевым выводом является то, что фрилансеры Python среднего уровня сегодня легко зарабатывают шестизначную сумму (100 000 долларов годового валового дохода или больше) :

Эти данные основаны на различных источниках:

  • Codementor утверждает, что средний фрилансер зарабатывает от 61 доллара и 80 долларов в 2019 году: источник
  • Этот сабреддит дает некоторое представление о том, сколько некоторые случайные фрилансеры зарабатывают в час (обычно это более 30 долларов в час): источник
  • Ziprecruiter обнаружил, что средний фрилансер Python зарабатывает в США 52 доллара в час. Это эквивалентно 8 980 долларов в месяц или 107 000 долларов в год: source
  • Payscale более пессимистичен и оценивает среднюю почасовую ставку около 29 долларов в час: source
  • Как разработчик Python, вы можете рассчитывать на заработок от 10 до 80 долларов в час. час со средней зарплатой 51 доллар (источник).

Если вы будете подрабатывать по 8 часов каждую субботу, вы будете зарабатывать дополнительно 400 долларов в неделю или 1600 долларов в месяц (до вычета налогов). Ваша почасовая ставка будет немного ниже, потому что вам придется тратить время на поиск клиентов-фрилансеров — до 20% вашего общего времени.

Шаги действия:

  • Запишите, сколько часов вы можете инвестировать в неделю.
  • Запишите свою целевую почасовую ставку.

2. Как обрести уверенность в том, что вы можете принести пользу рынку?

Как начать работать внештатным разработчиком?


Посмотрите это видео на YouTube

Прежде чем стать фрилансером Python, вы должны изучить самые основы Python. Какой смысл предлагать свои услуги фрилансера, если вы даже не можете писать код на Python?

Сказав это, скорее всего, вы живете в другой крайности. Вы не хотите предлагать свои услуги, пока не будете на 100% уверены в своих навыках. К сожалению, этот момент никогда не наступает. Я встречал сотни продвинутых кодеров, которые до сих пор не уверены в том, что смогут продавать свои услуги. Они не могут преодолеть свою собственную систему ограничивающих убеждений и ментальных барьеров.

Могу я сказать вам суровую правду? Вы не войдете в 1% лучших программистов Python с высокой вероятностью (твердый статистический факт). Но не бери в голову. Ваши услуги по-прежнему будут ценны для клиентов, у которых либо меньше навыков программирования (их много), либо мало времени (большая часть остальных). Большинство клиентов рады передать сложную работу по кодированию на аутсорсинг, чтобы сосредоточиться на своих ключевых областях результатов.

Независимо от уровня ваших навыков разнообразие проектов Python огромно. Есть простые проекты за 10 долларов, которые опытный кодер может решить за 5 минут. А есть сложные проекты, которые занимают месяцы и обещают вам большие выплаты от 100 до 1000 долларов после завершения каждого этапа.

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

Шаги действия:

  • Не торопитесь, чтобы просмотреть все заархивированные проекты Python для фрилансеров.
  • Выберите 3 проекта, которые, по вашему мнению, вы можете решить в ценовом диапазоне (от 10 до 50 долларов).
  • Запишите, в каком направлении вы хотите двигаться в первую очередь (помните о проектах, которые вы только что выбрали): наука о данных, просмотр веб-страниц, разработка приложений, создание сценариев и т. д.

3. С чего начать изучение основ Python?

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

Первые 20 часов – как всему научиться | Джош Кауфман | TEDxCSU


Посмотрите это видео на YouTube

Итак, как лучше всего изучать вероятностный подход? Простой. Используйте принцип 80/20. Этот знаменитый принцип гласит, что 80% причин приводят к 20% следствий. Избавьтесь от 80% малоценных задач и сосредоточьтесь на 20% причин с 80% следствий.

Лучший способ выучить 80% навыков за 20% времени — использовать шпаргалки Python. В этой статье я собрал 5 лучших шпаргалок по Python. Загрузите шпаргалки и потратьте первые 20 часов на их тщательное изучение. Или еще лучше: распечатайте их и разместите на стене своего офиса.

Шаги действия:

  • Загрузите шпаргалку: Шпаргалка по Python 3.
  • Подпишитесь на БЕСПЛАТНЫЙ курс шпаргалок: The Ultimate Python Cheat Sheet Course (5x Email Series).

4.

Как обрести независимость от фриланс-платформ?

Платформы для фрилансеров предлагают вам удобство и скорость при открытии собственного фриланс-бизнеса. Примерами являются Upwork, Freelancer или даже Fiverr. Некоторые из этих платформ (например, Upwork) будут проверять ваш профиль вручную, поэтому регистрация займет некоторое время. Причина в том, что на эти платформы ежедневно поступают тысячи заявок. Они должны быть избирательными, чтобы гарантировать определенное качество обслуживания. Я читал о многих случаях, когда Upwork отклонял фрилансеров с привлекательными профилями.

На первый взгляд эти платформы кажутся очень привлекательными для вашего зарождающегося внештатного бизнеса. Но будь осторожен! Многие существующие фрилансеры в значительной степени полагаются на эти платформы для фриланса. Используя такую ​​платформу, как Upwork, вы делаете себя уязвимыми. Ваш доход зависит от решений владельцев платформы. И не думайте, что они заботятся о ваших интересах. Например, Upwork уже берет 20% (!) от вашей почасовой ставки только за то, что вы предоставляете свои услуги потенциальным клиентам. И их сокращение до вычета налогов. Другими словами, вы работаете первые 12 минут каждого часа на Upwork (и следующие 28 минут на правительство).

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

Так какая же альтернатива? Если вы серьезно относитесь к тому, чтобы стать фрилансером Python, создание собственного веб-сайта — это то, что вам нужно. Это позволяет предлагать свои услуги клиентам по всему миру. Вы вызываете доверие, и клиенты воспринимают вас как профессионального фрилансера. Используйте фриланс-платформы для привлечения клиентов, но сохраняйте их для себя.

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

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

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

По мере создания растущей клиентской базы, которой вы управляете, вы обнаружите, что используете Upwork, Freelancer и Fiverr все реже и реже. Из-за этого ваша прибыль будет расти с течением времени. Ваш доход не только увеличится, но и будет стоять на прочной основе. Вам принадлежит основа вашего бизнеса (ваша клиентская база).

Шаги действия:

  • Получите осмысленный домен, например (например, «python-freelancing-services.com»).
  • Создайте страницу WordPress, представляющую ваши услуги.
  • Создайте профили на Freelancer.com, Upwork.com и Fiverr.com.

5. Как стать привлекательным фрилансером?

За последние месяцы я получил большой опыт использования услуг фрилансера в качестве клиента. Моя цель состояла в том, чтобы улучшить веб-сайт Finxter.com, чтобы проверить ваши навыки Python и мою книгу «Coffee Break Python». Подобная картина появлялась каждый раз, когда я публиковал описание нового проекта. Через несколько часов после публикации описания подали заявки несколько фрилансеров. Конкуренция была жесткой. Но через несколько минут я подсознательно выбрал внутренний круг высокопотенциальных кандидатов. Не было ни одного случая, чтобы я выбрал фрилансера, который не смог бы сразу пройти входные барьеры моего подсознания.

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

Используйте силу взаимности.

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

Википедия

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

Например, я опубликовал проект для проверки кода Python в моей последней книге по программированию на Python. В описании проекта говорилось, что я намеревался отредактировать код, чтобы сделать его более Pythonic. Этот проект был важен для меня, потому что я хочу обеспечить высокое качество и удобочитаемость для продвинутых программистов. Сразу несколько фрилансеров подали заявки на работу. Они перешли в «режим соревнования», хвастаясь своими полномочиями. Они пытались убедить меня, что идеально подходят для этого проекта. Я выбрал несколько кандидатов, но не был на 100% уверен ни в одном из них.

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

Это сила правила взаимности.

Не скрывайте свои звания и учетные данные.

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

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

Потратьте время на изображение своего профиля.

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

Не соревнуйтесь по цене.

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

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

Так сколько же стоит час вашей работы? Умножьте это число на 1,5. Делайте это по двум причинам: вы склонны недооценивать свою ценность для рынка и должны постоянно подталкивать себя к совершенствованию (это то, чего вы хотите, не так ли?). Теперь у вас есть ваш номер. НИКОГДА не работайте за почасовую ставку ниже этой цифры! И продолжайте настаивать на этом — нет предела!

Действия:

  • Собрать сертификаты Python. Например, используйте наше веб-приложение Finxter, чтобы подтвердить свой уровень владения Python.
  • Получите потрясающую аватарку.
  • Подарите что-нибудь каждому потенциальному клиенту. Например, потратьте некоторое время на создание прототипа решения. Это значительно улучшит ваш уровень одобрения и в конечном итоге сэкономит много времени!

6. Как найти практические проекты Python для обучения?

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

Практические проекты Python — как настоящие фрилансеры зарабатывают деньги в 2019 году


Посмотрите это видео на YouTube

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

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

Действия:

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

7. Когда прекратить обучение и начать делать настоящие проекты Python?

Программист-фрилансер. Когда начинать принимать проекты?


Посмотреть это видео на YouTube

Немедленно приступайте к реальным проектам. Используйте архив freelance.com, чтобы найти практические проекты, если вы еще не чувствуете себя уверенно. Но не ждите слишком долго — даже если вы начинающий программист. Выделите 10 минут в день или около того, чтобы следить за интересными проектами. Когда вы решите заархивированные проекты, есть вероятность, что у клиентов есть похожие проекты, которые они хотят передать на аутсорсинг. Чтобы привлечь трафик на свой собственный сайт фрилансера, вы можете написать сообщение в блоге на эту тему. Вы даже можете привлечь трафик через рекламу в Facebook, если вам нужно. Постарайтесь создать свой собственный бренд как можно скорее. Учитесь у реальных клиентов. Сначала освойте практические навыки. Какие практические навыки? Вы можете изучить их, только работая над реальными проектами. Не теряйте больше времени. Начните сегодня!

Мой ответ очень прост: начните прямо сейчас — независимо от вашего текущего уровня навыков.

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

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

Если вам нужно сначала преодолеть этот страх, то я бы порекомендовал вам начать делать какие-нибудь заархивированные фриланс-проекты. Я всегда рекомендую отличный ресурс, где вы можете найти эти заархивированные проекты фрилансеров. На этом ресурсе вы найдете не только несколько, но и все проекты фрилансеров в разных областях, таких как Python, наука о данных и машинное обучение, которые когда-либо публиковались на платформе Freelancer.com. Таких проектов тысячи.

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

Я рекомендую вам тратить 70% вашего учебного времени на завершение этих проектов. Сначала вы выбираете проект. Во-вторых, вы закончите этот проект. Независимо от вашего текущего уровня мастерства. Даже если вы совсем новичок, вам понадобится всего несколько недель, чтобы закончить проект, который принес фрилансеру 20 долларов. И что? Затем вы работали недели, чтобы заработать 20 долларов (которые вы бы в любом случае инвестировали в обучение), и вы значительно улучшили свой уровень навыков. Но теперь вы знаете, что можете решить проект фрилансера.

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

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

Если вы хотите узнать, сколько вы можете заработать, и получить общую картину состояния фриланса на Python в 2019 году, посмотрите мой бесплатный веб-семинар: Как заработать 3000 долларов за миллион в качестве фрилансера на Python. Это займет у вас всего 30-40 минут, и я подробно объясню вам состояние дел во фрилансе, перспективы на будущее и горячие навыки, а также сколько вы можете зарабатывать по сравнению с наемными работниками и другими профессиями.

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

Шаг действия:

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

8. Где лучше всего начать заниматься Python фрилансом?

Как начать работу в качестве внештатного разработчика в Интернете? (Fiverr против Upwork против собственного консалтингового веб-сайта)


Посмотреть это видео на YouTube

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

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

Upwork

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

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

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

Fiverr

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

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

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

Как развить навыки высокодоходного Python [вебинар]

Toptal

Toptal имеет сильный рынок Предложение: это платформа с лучшими 3% фрилансеров. Следовательно, он связывает высококлассных фрилансеров с высококлассными клиентами.

Стать фрилансером в Toptal крайне сложно: 97% соискателей не зайдут на платформу.

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

Кроме того, высокий порог входа гарантирует, что фрилансер останется ценный ресурс — он или она не становится товаром, как на других платформы для фрилансеров.

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

Freelancer.com

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

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

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


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

  • https://www.peopleperhour.com/
  • https://remote.com/
  • https://www.guru.com/
  • https://www.truelancer.com/

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

iWriter

Лучший сайт для предложения ваших услуг по программированию:

Twago

Однако в большинстве случаев достаточно общих сайтов фриланса, таких как Upwork, Toptal и Fiverr. Чтобы узнать больше о лучших сайтах для фрилансеров на Python, ознакомьтесь с моей оригинальной статьей в блоге.

Шаг действия:

  • Прежде чем двигаться дальше, выберите одну платформу (моя личная рекомендация: Upwork — и нет, я не связан ни с каким учреждением) и придерживайтесь ее как минимум один год. Приверженность — это король!

Другие учебные пособия Finxter

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

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

Я рекомендую вам читать не менее одного учебника в день (достаточно всего 5 минут на учебник), чтобы вы никогда не переставали учиться!

💡 Если вы хотите убедиться, что не забыли о своей привычке, не стесняйтесь присоединиться к нашей бесплатной электронной академии для получения еженедельных свежих руководств и обучающих напоминаний в вашем ВХОДЯЩЕМ ЯЩИКЕ.

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

Основы Python:

  • Python Одна строка цикла для цикла
  • Импорт модулей из другой папки
  • Определение типа объекта Python в список с плавающей запятой
  • Преобразовать список в массив NumPy
  • Добавить данные в файл JSON
  • Список фильтров Python
  • Вложенный список

Управление зависимостями Python:

  • Установить PIP
  • Как проверить свою версию Python
  • Проверьте версию Pandas в скрипте
  • Проверка версии Python Jupyter
  • Проверка версии пакета PIP

Devugging:

  • Check и Print Print Necceptions
  • 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101
  • Индекс списка вне допустимого диапазона
  • Fix Value Error Truth
  • Cannot Import Name X Error

Fun Stuff:

  • 5 шпаргалок, которые должен иметь каждый Python Coder
  • 10 лучших головоломок Python, которые помогут вам узнать свой истинный уровень навыков
  • Как заработать 1000 долларов на стороне в качестве фрилансера Python

Спасибо за обучение с Finxter!

Крис

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

Чтобы помочь студентам достичь более высоких уровней успеха в Python, он основал образовательный веб-сайт по программированию Finxter.com. Он автор популярной книги по программированию Python One-Liners (NoStarch 2020), соавтор серии самостоятельно опубликованных книг Coffee Break Python, энтузиаст информатики, фрилансер и владелец одного из 10 крупнейших блогов Python в мире.

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

11 лучших внештатных разработчиков Python [Найм за 48 часов]

Задача

По приблизительным оценкам Джайлса Томаса (соучредителя PythonAnywhere) в мире насчитывается от 1,8 до 4,3 миллиона разработчиков Python.

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

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

Питоновский гуру или змея в траве?

Итак, вы нашли сильного веб-разработчика Python. Как определить, входит ли он или она в элитный 1% лучших кандидатов, которых вы хотите нанять? Хотя не существует волшебной или надежной техники, вы, безусловно, можете задать вопросы, которые помогут определить глубину и сложность знания языка кандидатом. Ниже приводится краткая выборка таких вопросов.

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

Python в сорняках…

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

В: Зачем использовать декораторы функций? Приведите пример.

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

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

В: Что такое лямбда-выражения, генераторы списков и генераторы? Каковы преимущества и правильное использование каждого из них?

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

Генераторы списков обеспечивают краткий синтаксис для создания списков. Генераторы списков обычно используются для создания списков, в которых каждый элемент является результатом некоторых операций, применяемых к каждому члену другой последовательности или итерации. Их также можно использовать для создания подпоследовательности тех элементов, члены которых удовлетворяют определенному условию. В Python понимание списков предоставляет альтернативу использованию встроенных функций map() и filter() .

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

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

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

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

 >>> # ИНИЦИАЛИЗАЦИЯ МАССИВА -- МЕТОД 1
. ..
>>> х = [[1,2,3,4]] * 3
>>> х
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
>>>
>>>
>>> # ИНИЦИАЛИЗАЦИЯ МАССИВА -- МЕТОД 2
...
>
>> y = [[1,2,3,4] для _ в диапазоне (3)] >>> г [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]] >>> >>> # КАКОЙ МЕТОД ВЫ ДОЛЖНЫ ИСПОЛЬЗОВАТЬ И ПОЧЕМУ?

Хотя на первый взгляд кажется, что оба метода дают один и тот же результат, между ними существует чрезвычайно значительная разница. Метод 2 создает, как и следовало ожидать, массив из 3 элементов, каждый из которых сам является независимым массивом из 4 элементов. Однако в методе 1 все элементы массива указывают на один и тот же объект. Это может привести к тому, что, скорее всего, является непредвиденным и нежелательным поведением, как показано ниже.

 >>> # ИЗМЕНЕНИЕ МАССИВА x ИЗ ПРЕДЫДУЩЕГО ФРАГМЕНТА КОДА:
>>> х[0][3] = 99
>>> х
[[1, 2, 3, 99], [1, 2, 3, 99], [1, 2, 3, 99]]
>>> # О-О, НЕ ДУМАЙТЕ, ЧТО ВЫ ХОТЕЛИ ЭТОГО ПРОИЗОЙТИ!
...
>>>
>>> # ИЗМЕНЕНИЕ МАССИВА y ИЗ ПРЕДЫДУЩЕГО ФРАГМЕНТА КОДА:
>>> у[0][3] = 99
>>> г
[[1, 2, 3, 99], [1, 2, 3, 4], [1, 2, 3, 4]]
>>> # ЭТО БОЛЬШЕ ПОХОЖЕ НА ТО, ЧТО ВЫ ОЖИДАЛИ!
.
..

В: Что будет напечатано вторым оператором append() ниже?

 >>> определение добавления (список = []):
... # добавить длину списка к списку
... list.append (длина (список))
... список возврата
...
>>> добавить(['а','б'])
['а', 'б', 2]
>>>
>>> append() # вызов без аргументов использует значение списка по умолчанию []
[0]
>>>
>>> append() # но что происходит, когда мы СНОВА вызываем append без аргументов?
 

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

>>> append() # первый вызов без аргументов использует значение списка по умолчанию [] [0] >>> append() # но потом посмотрите, что получится. .. [0, 1] >>> append() # последовательные вызовы продолжают расширять один и тот же список по умолчанию! [0, 1, 2] >>> append() # и так далее, и так далее, и так далее... [0, 1, 2, 3]

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

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

 >>> def append(list=None):
... если список равен None:
            список = []
        # добавляем длину списка к списку
... list.append (длина (список))
... список возврата
...
>>> добавить()
[0]
>>> добавить()
[0]
 

В: Как поменять местами значения двух переменных с помощью одной строки кода Python?

Рассмотрим простой пример:

 >>> x = 'X'
>>> у = 'У'
 

Во многих других языках для замены значений x и y необходимо сделать следующее:

 >>> tmp = x
>>> х = у
>>> у = tmp
>>> х, у
(«Д», «Х»)
 

Но в Python позволяет выполнить замену одной строкой кода (благодаря неявной упаковке и распаковке кортежей) следующим образом:

 >>> х, у = у, х
>>> х, у
(«Д», «Х»)
 

Q: Что будет напечатано последним оператором ниже?

 >>> флист = []
>>> для i в диапазоне (3):
. .. flist.append(лямбда: i)
...
>>> [f() for f in flist] # что это выведет?
 

В любом замыкании в Python переменные связаны по имени. Таким образом, приведенная выше строка кода выведет следующее:

 [2, 2, 2]
 

Предположительно не то, что задумал автор приведенного выше кода!

Обходной путь — либо создать отдельную функцию, либо передать аргументы по имени; например:

 >>> flist = []
>>> для i в диапазоне (3):
... flist.append(лямбда я = я: я)
...
>>> [f() для f в списке]
[0, 1, 2]
 

В: Каковы основные различия между Python 2 и 3?

Хотя на данный момент Python 2 формально считается устаревшим, его использование по-прежнему достаточно широко распространено, поэтому разработчику важно понимать различия между Python 2 и 3.

Вот некоторые ключевые отличия, о которых должен знать разработчик:

  • Текст и данные вместо Unicode и 8-битных строк. Python 3.0 использует понятия текста и (двоичных) данных вместо строк Unicode и 8-битных строк. Самым большим следствием этого является то, что любая попытка смешать текст и данные в Python 3.0 вызывает ошибку типа (чтобы безопасно объединить их, вы должны декодировать байты или кодировать Unicode, но вам нужно знать правильную кодировку, например, UTF-8)
    • Это устраняет давнюю ловушку для наивных программистов Python. В Python 2 смешивание Unicode и 8-битных данных будет работать, если строка содержит только 7-битные (ASCII) байты, но вы получите UnicodeDecodeError, если она содержит значения, отличные от ASCII. Более того, исключение произойдет в точке объединения, а не в точке, в которой не-ASCII-символы были помещены в объект str. Такое поведение часто приводило в замешательство и ужас начинающих программистов Python.
  • функция печати. Оператор print заменен функцией print()
  • xrange — до свидания. xrange() больше не существует ( range() теперь ведет себя так же, как раньше xrange() , за исключением того, что он работает со значениями произвольного размера)
  • Изменения API:
    • zip() , map() и filter() все теперь возвращают итераторы вместо списков
    • dict. keys() , dict.items() и dict.values() теперь возвращают «представления» вместо списков
    • dict.iterkeys() , dict.iteritems() и dict.itervalues() больше не поддерживаются
  • Операторы сравнения. Операторы сравнения порядка ( < , <= , >= , > ) теперь вызывают TypeError исключение, когда операнды не имеют значимого естественного порядка. Вот некоторые примеры последствий этого:
    • Выражения типа 1 < '' , 0 > Нет или len <= len больше недействительны
    • None < None теперь вызывает TypeError вместо возврата False
    • Сортировка разнородного списка больше не имеет смысла — все элементы должны быть сопоставимы друг с другом

Более подробная информация о различиях между Python 2 и 3 доступна здесь.

Q: Python интерпретируется или компилируется?

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

Еще больше усложняет ответ на этот вопрос тот факт, что в случае с CPython (наиболее распространенной реализацией Python) ответ на самом деле «вроде того и другого». В частности, в CPython код сначала компилируется, а затем интерпретируется. Точнее, он не компилируется в собственный машинный код, а скорее в байт-код. Хотя машинный код, безусловно, быстрее, байт-код более переносим и безопасен. Затем байт-код интерпретируется в случае CPython (или интерпретируется и компилируется в оптимизированный машинный код во время выполнения в случае PyPy).

В: Какие существуют альтернативные реализации CPython? Когда и почему вы можете их использовать?

Одной из наиболее известных альтернативных реализаций является Jython, реализация Python, написанная на Java, которая использует виртуальную машину Java (JVM). В то время как CPython создает байт-код для работы на виртуальной машине CPython, Jython создает байт-код Java для работы на JVM.

Другой — IronPython, написанный на C# и ориентированный на стек .NET. IronPython работает в среде Microsoft Common Language Runtime (CLR).

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

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

  • Скорость. Благодаря компилятору Just-in-Time (JIT) программы Python часто работают быстрее на PyPy.
  • Использование памяти. Большие программы Python, требующие большого объема памяти, могут в конечном итоге занимать меньше места в PyPy, чем в CPython.
  • Совместимость. PyPy полностью совместим с существующим кодом Python. Он поддерживает cffi и может запускать популярные библиотеки Python, такие как Twisted и Django.
  • Песочница. PyPy позволяет запускать ненадежный код полностью безопасным способом.
  • Безстековый режим. PyPy по умолчанию поддерживает режим без стека, предоставляя микропотоки для массового параллелизма.

В: Каков ваш подход к модульному тестированию в Python?

Самый фундаментальный ответ на этот вопрос касается среды модульного тестирования Python. По сути, если кандидат не упомянул unittest при ответе на этот вопрос, это должно быть огромным красным флажком.

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

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

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

Ценность и сила mock хорошо описаны в An Introduction to Mocking in Python. Как уже отмечалось, системные вызовы являются первыми кандидатами для имитации: будь то написание сценария для извлечения дисковода компакт-дисков, веб-сервер, который удаляет устаревшие файлы кеша из /tmp, или сервер сокетов, который привязывается к TCP-порту, все эти вызовы имеют нежелательные функции. побочные эффекты в контексте модульных тестов. Точно так же поддержание эффективности и производительности ваших модульных тестов означает удаление как можно большего количества «медленного кода» из автоматических тестовых прогонов, а именно файловой системы и доступа к сети.

[Примечание: этот вопрос предназначен для разработчиков Python, которые также имеют опыт работы с Java.]
В: Какие ключевые отличия следует учитывать при кодировании на Python и Java?

Отказ от ответственности №1. Различий между Java и Python много, и, вероятно, это тема, достойная отдельной (длинной) статьи. Ниже приведена лишь краткая выборка некоторых ключевых различий между двумя языками.

Отказ от ответственности №2. Цель здесь не в том, чтобы начать религиозную битву за достоинства Python и Java (как бы это ни было весело!). Скорее, вопрос на самом деле просто направлен на то, чтобы увидеть, насколько хорошо разработчик понимает некоторые практические различия между двумя языками. Поэтому приведенный ниже список намеренно избегает обсуждения спорных преимуществ Python по сравнению с Java с точки зрения продуктивности программирования.

Имея в виду два приведенных выше заявления об отказе от ответственности, вот пример некоторых ключевых различий, которые следует учитывать при написании кода на Python и Java:

  • Динамическая и статическая типизация. Одно из самых больших различий между двумя языками заключается в том, что Java ограничен статической типизацией, тогда как Python поддерживает динамическую типизацию переменных.
  • Статические и классовые методы. Статический метод в Java не преобразуется в метод класса Python.
    • В Python вызов метода класса требует дополнительного выделения памяти, чего не требует вызов статического метода или функции.
    • В Java имена с точками (например, foo.bar.method) просматриваются компилятором, поэтому во время выполнения не имеет значения, сколько их у вас есть. Однако в Python поиск происходит во время выполнения, поэтому «каждая точка имеет значение».
  • Метод перегружен. В то время как Java требует явного указания нескольких функций с одинаковыми именами и разными сигнатурами, то же самое можно сделать в Python с помощью одной функции, которая включает необязательные аргументы со значениями по умолчанию, если они не указаны вызывающей стороной.
  • Одинарные и двойные кавычки. В то время как использование одинарных и двойных кавычек имеет важное значение в Java, они могут использоваться взаимозаменяемо в Python (но нет, это не позволит начать одну и ту же строку с двойной кавычки и попытаться закончить ее одинарной). цитата или наоборот!).
  • Геттеры и сеттеры (не!). Геттеры и сеттеры в Python излишни; скорее, вы должны использовать встроенное свойство (вот для чего оно нужно!). В Python геттеры и сеттеры — пустая трата времени процессора и программиста.
  • Классы необязательны. В то время как Java требует, чтобы каждая функция была определена в контексте определения окружающего класса, Python не имеет такого требования.
  • Отступ имеет значение… в Python. Это кусает многих начинающих программистов Python.

Общая картина

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

В: Для чего Python особенно хорош? Когда использование Python является «правильным выбором» для проекта?

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

  • Простота использования и простота рефакторинга, благодаря гибкости синтаксиса Python, что делает его особенно полезным для быстрого прототипирования.
  • Более компактный код, еще раз благодаря синтаксису Python, а также множеству функционально богатых библиотек Python (бесплатно распространяется с большинством реализаций языка Python).
  • Динамически типизированный и строго типизированный язык, предлагает редкое сочетание гибкости кода и в то же время избегает надоедливых ошибок неявного преобразования типов.
  • Это бесплатно и с открытым исходным кодом! Нужно ли говорить больше?

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

В: Каковы некоторые недостатки языка Python?

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

Два наиболее распространенных правильных ответа на этот вопрос (ни в коем случае не претендуют на исчерпывающий список):

  • Глобальная блокировка интерпретатора (GIL). CPython (наиболее распространенная реализация Python) не является полностью потокобезопасным. Для поддержки многопоточных программ Python CPython предоставляет глобальную блокировку, которая должна удерживаться текущим потоком, прежде чем он сможет безопасно получить доступ к объектам Python. В результате, независимо от того, сколько потоков или процессоров присутствует, в любой момент времени выполняется только один поток. Для сравнения стоит отметить, что реализация PyPy, обсуждавшаяся ранее в этой статье, обеспечивает бесстековый режим, который поддерживает микропотоки для массового параллелизма.
  • Скорость выполнения. Python может работать медленнее, чем скомпилированные языки, поскольку он интерпретируется. (Ну, вроде того. См. наше предыдущее обсуждение этой темы.)

Резюме

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

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

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