Базовый код на Python работает очень долго из-за ввода больших чисел
Задачка: Посчитать сумму чисел от 1 до N. Значение N по модулю не превышает 10^9. При вводе +-10^9 зависает. При вводе +-10^8 работает, но долго. Как исправить? Код:
n = int(input()) summa = 0 if n >= 0: while n >= 1: summa += n n -= 1 elif n < 0: while n
Отслеживать
задан 19 окт 2020 в 14:47
11 1 1 бронзовый знак
А какая цель этого всего? Если просто посчитать, то ведь есть формула, по которой сумма арифметической прогрессии считается без цикла. А если цикл обязателен, то есть всякие другие приколы, например библиотека Numba.
19 окт 2020 в 14:56
sum(range(1, N+1))
19 окт 2020 в 14:56
@CrazyElf а есть формула для отрицательных чисел?
19 окт 2020 в 14:56
Решение в одну строку: print((lambda n: ((abs(n) * (abs(n) + 1)) // 2) * (-1 if n < 0 else 1) + (1 if n 19 окт 2020 в 15:02 @andreymal Формула для суммы арифм. прогрессии работает для любых знаков начала и конца 19 окт 2020 в 15:15
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
from math import ceil def ariphm_sum(start, stop, step=1): """ Сумма арифметической прогрессии Аргументы аналогичны функции range, т.е. [start, stop) с шагом step """ n = ceil((stop - start) / step) return (start + step*(n-1)/2) * n assert ariphm_sum(1, 101) == 5050 assert ariphm_sum(-100, 0) == -5050 assert ariphm_sum(-100, 101) == 0 assert ariphm_sum(1, 8, 2) == 16 assert ariphm_sum(1, 10, 2) == 25 assert ariphm_sum(-3, 10, 2) == 21 assert ariphm_sum(-10**8, 10**8+2) == 100000001
Отслеживать
ответ дан 19 окт 2020 в 21:17
27.2k 2 2 золотых знака 45 45 серебряных знаков 76 76 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Python
В нашем приложении мы рассказываем также и об искусственных языках. В этом выпуске, посвященном активно развивающемуся языку программирования Python, о причинах его изучения, достоинствах и недостатках рассказывают Алексей Зобнин , Борис Орехов , Михаил Густокашин и Андрей Паринов .
Почему вы стали изучать Python?
Алексей Зобнин, доцент базовой кафедры «Яндекса» факультета компьютерных наук
По очень необычной причине. В 2008 году в недавно открывшейся Школе анализа данных «Яндекса» я читал курс по программированию. Мы изучали со студентами язык C++. И вдруг от Ильи Сегаловича, технического директора «Яндекса», поступила просьба посвятить несколько занятий на курсе языку Python. Я до того момента на «Питоне» не программировал и вообще мало что о нем слышал, хотя язык этот довольно старый, он появился в самом начале 1990-х. Я прочитал книжку про «Питон», и мне этот язык очень понравился.
Через год, когда я стал разработчиком в «Яндексе», меня приятно удивило, как широко этот язык распространен там внутри. Помню еще такой случай. Как-то я присутствовал со своим руководителем на одном собеседовании, и мой начальник задал кандидату такой вопрос. Пусть требуется выполнить какие-то действия по обработке или преобразованию текстовых файлов – извлечь информацию, подсчитать статистики, записать в структурированном виде ответ и т.д., причем эти действия не настолько тривиальны, что их можно записать как комбинацию стандартных консольных утилит Unix. Какой язык программирования вы бы стали использовать? Кто-то мог бы ответить «Perl» (да, он был достаточно популярен в то время), кто-то воспользовался бы старым добрым «Паскалем» или тем же C++, но стремительно набиравший тогда популярность «Питон» подходил для этой цели идеально.
Борис Орехов, доцент школы лингвистики факультета гуманитарных наук
Я начал изучать Python благодаря тому, что в моей предметной области – лингвистике и анализе данных – используют именно этот язык. Сейчас на многих языках программирования можно написать программу, которая делает что угодно. Языки в базовой комплектации почти равны по возможностям и выразительности. Выбор определяют дополнительные модули, подключаемые библиотеки, которые облегчают выполнение какой-либо задачи. Python в этом смысле очень заботливый язык: он берет на себя большую часть рутины. Есть даже известная шутка, уже встроенная в язык: если специальным образом написать и выполнить в Python несложный код, то откроется браузер с веселой картинкой, на которой человек летит в небе, а другой удивленно спрашивает его, как ему удается летать. Первый отвечает, что точно не знает, как так вышло, он просто подключил в Python специальный модуль для полетов, а остальное получилось само.
Такие «магические» модули в Python есть и для многих стандартных лингвистических задач, для машинного обучения и многого другого, что постоянно нужно и мне, и нашим студентам-лингвистам. Так что, если ты знаешь Python, ты во многих смыслах становишься как Гарри Поттер. Во-первых, потому, что тебе доступна магия программирования, во-вторых, ты теперь «змееуст», если вспомнить, к какому подотряду чешуйчатых относятся питоны. Хотя название языка не биологического происхождения, оно восходит к британской комик-группе Monty Python, так что Python – это еще и весело.
Когда я начал учить Python, я уже неплохо знал Perl, R, SQL, основы веб-программирования, немного PHP. После свободного стиля, который свойствен всем этим языкам, дисциплина Python показалась мне волнующей и прекрасной. Сразу захотелось переписать на нем все то, что я уже находил в Perl и PHP.
Кроме того, начало занятий Python совпало для меня с тем, что я поступил на работу в Вышку и оказался в среде людей, которые тоже писали на Python. Это важно: когда я работал с Perl, вокруг меня не было единомышленников, и даже довольно приличное Perl-комьюнити в интернете этого не меняет. Когда оказываешься в особенной среде, это сильно стимулирует личностный рост и позволяет быстрее находить верные решения.
Михаил Густокашин, приглашенный преподаватель департамента больших данных и информационного поиска факультета компьютерных наук
В 2009 году я занимался подготовкой школьников к олимпиадам по информатике и собственно проведением олимпиад: составлением задач, подготовкой тестов и т.п.
Тогда большинство учителей использовало Pascal для обучения программированию (в принципе, это верно и сейчас), но для олимпиадных задач он подходил плохо: подводило отсутствие стандартной библиотеки с удобно реализованными алгоритмами и структурами данных. Для олимпиад больше подходил язык C++, но в нем некоторые даже простые операции выполнялись с помощью довольно монструозных конструкций. Например, чтобы просто пройти по последовательности чисел и напечатать ее, нужно было написать что-то в стиле:
for (std::vector::iterator it = v.begin(); it != v.end(); ++it)
Такая сложность означала, что есть всего два варианта на ранних этапах обучения программированию: либо просить учеников запомнить это наизусть без понимания, либо долго и нудно рассказывать теорию и только после этого перейти к решению практических задач. Оба способа были неидеальны.
В этот момент я увидел, как просто и изящно можно реализовать полностью аналогичную конструкцию на Python:
А когда я увидел более простой способ:
то интерес к языку возрос многократно.
В те времена, как и сейчас, было очень много разных языков, в том числе с очень красивыми конструкциями. Почему именно Python? Уже в то время он входил в пятерку самых популярных языков по индексу Tiobe (https://www.tiobe.com/tiobe-index/), причем находился там несколько лет. Это давало надежду на то, что язык будет жить, будет поддержка, обновления, библиотеки, документация и сообщество.
В его пригодности для обучения я в тот момент сомневался, но опыт MIT (Massachusetts Institute of Technology), который уже тогда использовал Python как основной язык для преподавания программистских курсов, убедил меня хотя бы попробовать. Язык оказался очень простым, и уже на второй день я достаточно уверенно решал школьные задачи на нем. Более глубокое освоение языка тоже не заняло много времени, но, справедливости ради, это был далеко не первый мой язык.
Возвращаясь к C++ – в какой-то момент после изучения Python мне хотелось забыть его как страшный сон, но стандарт C++11 (2011 года) сделал язык приятнее, в том числе для простых учебных задач. Например, задача по выводу последовательности стала выглядеть так:
for (auto elem : v)
Почти как на Python, но все равно немного сложнее.
Андрей Паринов, старший преподаватель департамента анализа данных и искусственного интеллекта факультета компьютерных наук
На сегодняшний день Python поддерживает сплоченное сообщество программистов. Существует обширная библиотека классов для вычислений, работы с файловой системой, реляционными базами данных, NoSQL-хранилищами данных, сбором и предобработкой данных. Активно развиваются работающие, как отлаженный механизм, веб-фреймворки.
Мое знакомство с Python началось в 2008 году. Меня заинтересовали алгоритмы кластеризации и классификации, построение рекомендаций, генетические алгоритмы и т.д. Большую часть алгоритмов сейчас рассматривают как часть машинного обучения. На глубоком уровне задачи и алгоритмы я изучил в книгах и работах известных ученых – Бориса Григорьевича Миркина, Сергея Олеговича Кузнецова, Константина Вячеславовича Воронцова.
Стоит ли начинать обучаться программированию именно на Python?
Алексей Зобнин
«Священный» спор о том, каким должен быть первый язык программирования, не прекращается уже десятки лет. У меня первыми языками в середине 90-х были BASIC и Pascal. В середине двухтысячных я вел занятия по информатике в школе, и мы программировали там на PascalABC (тогда еще без .NET). Знаю многих людей, которые предлагают в качестве первого языка изучать JavaScript. Но теперь я за Python! Трудно придумать язык, так похожий на «псевдокод» (что бы мы ни обозначали этим словом). Создатели «Питона» руководствовались «принципом наименьшего удивления»: конструкции языка должны означать именно то, что в основном ожидали бы от них программисты, впервые их увидевшие. Не на последнем месте среди аргументов этого спора и моя любимая фишка языка, объявляющая отступы строк программы обязательной частью синтаксиса. Знаю, насколько тяжело бывает научить школьников расставлять отступы в программе, чтобы обозначить ее структуру. А тут отступы – это необходимая часть языка.
Если говорить о самых маленьких школьниках, то для них в «Питоне» есть прекрасный модуль turtle, реализующий «черепашью графику» из языка «Лого».
Борис Орехов
Дидактический аспект занимает многих теоретиков и профессиональных программистов. Тому, с какого языка стоит начинать обучение, посвящен довольно широкий круг материалов. И многие из них действительно рекомендуют именно Python. Он не только простой, он еще и предоставляет вам максимально короткий путь от первой учебной программы (у программистов это традиционно вывод на экран приветствия мира “Hello World!”; мы, конечно, предлагаем студентам-лингвистам приветствовать мир на башкирском или на исландском: “һаумы, донъя!” или “Sæll, heimur!”) до программы, которая делает что-то полезное. Хотя лично мой путь в программирование был другим и начинался с PHP, в школе у меня не складывалось со многими предметами, которые предполагали решение каких-то общих задач, условия которых оторваны от практического, наблюдаемого. Поэтому я до сих пор не люблю игры: выигрыш в них ни к чему не ведет, это не созидательный процесс. Для людей моего темперамента Python очень подходит: можно начинать делать что-то полезное уже после первого занятия. А есть специальные учебные языки программирования вроде Logo, которые для такого практико-ориентированного пути не предназначены совсем.
Но есть и альтернативные точки зрения. Так, некоторые молодые программисты из провинции обиженно пишут, что в их регионе трудно найти первую работу, если ты знаешь только Python (в Москве и Санкт-Петербурге с этим проблем, кажется, нет). Но сам Python в этом не виноват.
Михаил Густокашин
Да! Более того, большинству людей, которые не собираются становиться программистами, можно на нем и закончить свое обучение.
Процесс обучения программированию можно, до некоторой степени, сравнивать с процессом обучения работе начальника: вы составляете инструкции, и исполнитель их выполняет. Некоторые языки программирования можно сравнить с требованием писать инструкции на жестком канцелярите, где исполнитель все воспримет максимально формально и превратно воспримет любую описку. С другой стороны, существуют учебные языки, где очень ограничен набор инструкций – этот процесс можно сравнить с руководством очень ограниченным исполнителем, который плохого не сделает, но и хорошего делать умеет мало.
Python достаточно изящно размещается между двумя этими крайностями, позволяя «писать инструкции» почти человеческим языком и в то же время умеренно ограничивая набор возможностей.
Поэтому он не вызывает отвращения на начальном этапе обучения своей сложностью, а на более позднем этапе – своей ограниченностью.
Андрей Паринов
На сегодняшний день Python де-факто является основным языком для анализа данных и машинного обучения. Он поддерживает различные библиотеки для анализа данных. Библиотеки NumPy и SciPy содержат классы и функции для быстрых и точных вычислений. Библиотека ScikitLearn содержит алгоритмы машинного обучения. Библиотека NLTK содержит функции для работы с текстами. Библиотеки PyTorch позволяет обучать нейронные сети с использование GPU.
Долгое время единственным вариантом для анализа данных было использование дорогих больших программных пакетов, таких как SAS, SPSS и STATA. Несмотря на удобство и высокий уровень качества, стоимость мешала их широкому распространению. Начиная с 80-х годов разрабатывались свободные пакеты для анализа данных. В 2000-х различные инициативы по разработке свободных пакетов для анализа данных были поддержаны Google, Microsoft, Boeing и другими. К 2010 году наиболее функциональными стали платформы на основе языка R и языка Python.
Однако, по версии авторитетного рейтинга TIOBE, Python занимает в большинстве рейтингов 4-е место после Java и С/C++.
На сегодня существует более десятка популярных методологий сравнения. Основные источники для сравнения: запросы в Google, проекты на Github, объявления о поиске сотрудников, научные статьи, авторские методики, опросы программистов. Область сравнений – год, страна, целевая платформа.
Пять наиболее авторитетных рейтингов сходятся во мнении, что Python входит в пятерку самых популярных языков программирования. Лишь рейтинг журнала IEEE Spectrum считает Python самым популярным языком программирования в 2017 году в США.
Все дело в том, что на данный момент уже существует множество промышленных проектов, которые реализованы не на Python. До сих пор С++ и Java занимают лидирующие позиции в рейтингах именно по причине необходимости поддержки кода существующих проектов. Существующие проекты надо поддерживать и развивать. Переписывать их полностью на любом другом языке – слишком дорогое занятие.
Таким образом, при выборе языка программирования стоит обратить внимание на задачи, которые планируется решать с его помощью. На сегодняшний день Python 3 – прекрасный выбор для разработки программ, связанных с анализом данных и машинным обучением.
Каковы сильные и слабые стороны Python в сравнении с другими языками программирования?
Алексей Зобнин
Для того чтобы новый язык стал популярным, недостаточно просто взять и придумать хороший синтаксис и реализовать транслятор. Необходима экосистема: наличие удобных библиотек, удобных средств разработки и, главное, большого сообщества активных пользователей. «Питон» набрал эту критическую массу где-то во второй половине двухтысячных. Он уверенно занимает свою нишу высокоуровневого скриптового языка общего пользования, где акцент сделан на производительности программиста и на читаемости кода. Язык особенно популярен у специалистов по машинному обучению и тех, кто работает с большими данными. Удобная интерактивная оболочка IPython Notebook позволяет прямо в браузере создавать документы с фрагментами кода на «Питоне» и результатами их выполнения с возможностью перезапустить каждый фрагмент независимо. Библиотеки numpy, scipy, matplotlib, pandas и т.д. позволяют обрабатывать и визуализировать научные и статистические данные. Упомяну и широко известные библиотеки для обучения нейронных сетей TensorFlow, Theano, Keras, также имеющие основную реализацию на «Питоне».
Я часто использую систему компьютерной алгебры SageMath. Этот замечательный проект оказался столь успешным еще и потому, что в качестве языка в этой системе был выбран «Питон» (правда, с немного расширенным синтаксисом). Это демонстрирует еще одну сферу применения «Питона» в качестве встраиваемого в другие системы языка программирования или как скриптового языка для расширения возможностей других приложений. Например, на нем можно писать макросы для LibreOffice.
Бессмысленно сравнивать этот язык с занимающими совсем другую нишу С/C++ – я люблю говорить, что эти языки ортогональны друг другу. Например, для больших распределенных серверных приложений «Питон» вряд ли подойдет.
Я в своей работе использую и C++, и «Питон», и у меня часто бывают курьезные машинальные ошибки, когда переключаешься с одного языка на другой. Например, мне надо было уменьшить переменную на единицу, и я написал в «Питоне» --x. А потом удивлялся, почему это программа запустилась и работает, но вовсе не так, как ожидается.
Пожалуй, неудачный момент в синтаксисе «Питона», который часто приводит к ошибкам, это когда присваиваешь значение какой-то существующей переменной, ошибаешься при этом в ее имени, и значение вместо присваивания старой переменной молча записывается в новую переменную. Полагаю, на эти грабли наступал каждый программист на «Питоне».
Еще один недостаток «Питона», являющийся, на мой взгляд, отражением его достоинств, в том, что язык зачастую не заставляет программиста задумываться об эффективности операций и структур данных. Например, нужно нам вставить элемент в середину списка – пожалуйста, сделаем это через «срезки». А то, что в классической реализации списка эффективнее всего добавлять элементы именно в конец, задумываются не все.
Я оставлю в стороне обсуждение классического «недостатка» «Питона», связанного со скоростью работы программ. Считается, что для прототипирования сложных систем или для разовых вычислений это с лихвой компенсируется скоростью разработки.
Борис Орехов
Тема сильных и слабых сторон Python в профессиональной среде обсуждается давно и подробно. Тут нет секретов. Python ценят за скорость разработки: полезную и полнофункциональную программу на нем можно написать в среднем быстрее, чем на C или Java, но работать она будет в среднем медленнее. Эта «медленность», конечно, будет ощущаться только при обработке по-настоящему больших массивов данных, которые появились в распоряжении лингвистов не так давно. В то же время вопросом остается, что сейчас обходится дороже – машинное время или время программиста? Иными словами, для финального успеха важнее быстро написать программу, которая работает немного медленнее, или долго писать программу, которая потом все сделает быстро? Я считаю, что сейчас правильнее первый подход, и Python ему полностью отвечает, не говоря уже о том, что существуют способы «разогнать» программу на Python до нужных скоростей.
Все остальные особенности Python – дело вкуса (нестрогая типизация, форматирование как часть синтаксиса, свойства реализации встроенных структур данных), и любой программист с опытом в зависимости от качества этого опыта может отнести их как к положительным, так и к отрицательным особенностям языка.
С позиций моей субъективности важно то, что Python оказался хорошо приспособлен для работы именно с текстовыми массивами. Скажем, если я захочу компьютерно обработать текст на русском языке, то я обнаружу, что у Fortran просто нет поддержки современного способа кодировать символы, стандарта Unicode. Этот язык, как и R, предназначен скорее для того, чтобы читать и считать с его помощью уже подготовленные для анализа данные. А Python в этом смысле ничем не ограничен.
Михаил Густокашин
Про простоту изучения я уже написал, это однозначно сильная сторона по сравнению со многими другими языками программирования. Также у Python есть большой набор библиотек на все случаи жизни, сообщество, умеющее отвечать на вопросы, и хорошие учебные курсы. Все это приводит к тому, что «набросать» работающий прототип почти любой программы на Python намного быстрее, чем на большинстве других языков.
К недостаткам можно отнести низкую скорость работы программ на Python; динамическую типизацию переменных, которая может привести к трудно отлавливаемым ошибкам; не очень хорошие возможности по распараллеливанию программ (сейчас число ядер процессора растет намного быстрее скорости отдельного ядра, и это действительно серьезная проблема). В сравнении с каким-либо конкретным языком недостатков можно найти больше, но все они, что радует, начинают проявляться только на больших и сложных проектах, в разработке которых участвуют люди того уровня профессионализма, когда знают уже больше одного языка.
Андрей Паринов
Основной причиной популярности Python стала совокупность нескольких факторов: удобный и понятный синтаксис; слабая типизация; открытость; возможность подключения модулей на языке С.
Совокупность этих обстоятельств привела к возможности быстро разрабатывать программы. Высокая скорость разработки средних по размеру программ – основное преимущество Python. В то же время в крупных промышленных проектах, где над одной и той же системой трудится множество программистов, слабая типизация затрудняет поддержку кода системы, усложняет отладку и предъявляет повышенные требования к уровню разработчиков. Поэтому многие выбирают для проектов язык программирования с сильной типизаций – Java, C++, C#.
Что ждет Python в будущем, на ваш взгляд?
Алексей Зобнин
В ближайшем будущем – завершение неизбежного перехода в индустрии с версий 2.x на версии 3.x. Десять лет назад создатели языка смело выпустили версию 3.0, которая не была обратно совместима со старыми версиями, но в которой, по мнению авторов, устранялись фундаментальные недостатки предыдущих версий. Какое-то время обе ветки версий развивались параллельно. Ветку 3.x сообщество программистов приняло не сразу, ей пришлось в некотором смысле заново завоевывать популярность. Мне тогда казалось, что версии 2.x будут сходиться к числу e, а версии 3.x – к числу π. В итоге ветка 2.x навечно застыла на версии 2.7.14, а вот в третьей ветке число π давно преодолено: текущая стабильная версия имеет номер 3.6.4.
Борис Орехов
Пока что будущее Python выглядит радужно: это совершенно живой язык, на нем пишут код в самых разных предметных областях, в том числе в самых актуальных, и это особенно важно. Большое место в современном мире IT занимают разного рода искусственные нейронные сети, и Python сразу же стал языком, на котором реализованы интерфейсы к библиотекам для таких сетей.
Количество полезного кода на Python растет, и чем больше его становится, тем более долгую жизнь языку это обеспечивает. Perl или Fortran считаются устаревшими языками, но за их длинную историю было написано много полезных программ, которые используются до сих пор, в основном в науке: Perl – до сих пор основной язык для расчетов в генетике, а Fortran никуда не уходил из астрономии и физики атмосферы. Хотя отчасти это же справедливо и для IT, и до последнего времени интерфейс почты Mail.Ru был написан на Perl, в индустрии все обновляется с высокой скоростью, несмотря даже на почти суеверный консерватизм айтишников, фиксируемый в известной поговорке: «Работает – не трогай!». Но у ученых задачи другие: нужно не заботиться о красоте кода, а добывать новое знание. С этой точки зрения, разумеется, неправильно переписывать на модном языке программы, которые и так хорошо работают. Поэтому даже если мода на Python со временем пройдет (пока признаков этого мы не видим), то ученые еще долго будут пользоваться тем, что написано для него сейчас.
Михаил Густокашин
Python дошел до той стадии популярности, что даже его «тихое угасание», если и случится, будет длиться многие годы.
Уже сейчас во многих компаниях считается, что программист знает Python по умолчанию, его можно сравнить с неким «базовый английским» в мире настоящих языков.
Я думаю, что, как и базовый английский, Python распространится далеко за пределы программистского сообщества и позволит специалистам самых разных профессий автоматизировать рутинную работу и расширять свои возможности до недостижимых раньше границ.
Если 20-25 лет назад человек, освоивший электронные таблицы, считался чуть ли не гением по сравнению с теми, кто пользовался амбарной книгой, то сейчас умение пользоваться электронными таблицами хотя бы на базовом уровне – это стандартное требование для большинства офисных специалистов, ученых и вообще всех, кто использует компьютер на работе.
Через 20-25 лет то же самое вполне может произойти с программированием. И вероятно, языком для такого программирования будет Python.
Андрей Паринов
На мой взгляд, язык Python ждет стабильное радужное будущее. У языка активное сообщество сторонников, большое количество проектов, постоянная поддержка со стороны крупнейших производителей ПО, стабильный спрос на программистов.
Язык программирования Python: особенности и перспективы
В чем преимущество? Язык программирования Python один из самых популярных и востребованных на сегодняшний день. Причин тому несколько: простота синтаксиса, большое количество сфер использования, бесплатность и т. д.
На что обратить внимание? Однако есть у Python и ряд минусов, главным из которых называют медлительность программ. В целом, этот язык программирования является отличным вариантом для новичка.
В статье рассказывается:
- История языка Python
- Сферы применения языка программирования Python
- Отличительные черты Python
- Плюсы и минусы языка программирования Python
- Сравнение Python с другими ЯП
- Библиотеки Python
- Синтаксис языка программирования Python
- Примеры кода Python
- Полезная литература для изучения Python
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.
Бесплатно от Geekbrains
История языка Python
Язык программирования Python появился в 1989-1991 гг. Его автор – Гвидо ван Россум, голландский программист. Сначала он относился к созданию этого языка как к хобби: хотел заняться чем-то полезным во время рождественских каникул. Идея нового языка программирования возникла у Гвидо за два года до этого. На выбор названия повлияло любимое телешоу программиста – «Летающий цирк Монти Пайтона».
У кодеров эта развлекательная передача была очень популярна в те годы, поскольку они находили в ней отсылки к сфере IT-технологий. Таким образом, Python получил свое название в честь комик-группы.
Язык программирования Python развивался в несколько этапов. Итог каждого периода – появление новой версии языка.
- В 1991 году Гвидо ван Россум обнародовал первую версию 0.9.0. В нее входили базовые возможности: работа с данными различных форматов и исправление ошибок.
- В 1994 году появилась версия 1.0, функциональные возможности которой дополнились обработкой списков данных (систематизация, фильтрация, сокращение и сопоставление).
- В 2000 году свет увидела версия 2.0. В ней были исправлены баги и лаги предыдущих вариантов. Кроме того, появились полезные фишки: поддержка Unicode и облегченная методика циклического просмотра списка.
- В 2008 году была опубликована версия 3.0. Была добавлена возможность печати, поддержка деления чисел, а также расширенное исправление ошибок.
- В 2021 году была представлена последняя версия – 4.0.
Как уже упоминалось выше, изначально над разработкой языка программирования Python трудился только один кодер – Гвидо ван Россум. Сегодня же над данным проектом работает целая команда специалистов. В 2001 году была создана некоммерческая организация Python Software Foundation. Ее цели: продвижение данного языка среди разработчиков, контроль соблюдения авторских прав, организация обучающих мероприятий и т.д.
Сферы применения языка программирования Python
Программирование на языке Python используется во многих сферах.
Web-разработка
Код всей серверной части сайта может быть написан на популярных фреймворках языка Python. Речь идет о Django и Flask. Эти готовые наборы инструментов позволяют облегчить процесс создания html-страниц, запросов к базе данных и систему обработки URL-адресов.
Существуют также и дополнительные фреймворки для разработки веб-приложений на языке Python.
- HTMLGen помогает добавлять готовые классы для html-страниц.
- Пакет mod_python позволяет открывать Apache-скрипты, а также обеспечивает стабильную работу шаблонов Python Server Pages.
Визуальный интерфейс
В сфере графического дизайна многие задачи успешно решаются с помощью языка программирования Python. В случае если необходимо адаптировать визуальный интерфейс под стилистику операционной системы, для которой разрабатывается приложение, можно пользоваться Python со специальными библиотеками Dabo и PythonCard. Использование этих инструментов существенно облегчает процесс написания кода.
Базы данных
Современная версия данного языка позволяет максимально удобно работать с любыми базами данных. Функционал рабочей среды Python дает возможность взаимодействовать с базами с помощью SQL-запросов непосредственно в скрипте. Если потребуется использовать код, написанный на «питоне» для баз данных Oracle и MySQL, в него придется внести лишь минимальные правки.
Системное программирование и администрирование
Язык программирования Python обладает интерфейсами, которые позволяют управлять службами различных операционок, в частности, Windows, Linux и т.д. Соответственно, на этом языке удобно создавать портативные приложения для компьютера. Популярен Python и среди системных администраторов: они пишут на нем свои программы. Кроме того, использование данного языка помогает быстрее открывать и искать файлы, запускать программы, осуществлять вычисления и выполнять другие типовые задачи.
Сложные расчеты
В этой сфере программирование на языке Python распространено наравне с С++ и FORTRAN. Чтобы осуществлять математические вычисления, требуется расширение NumPy, которое дает возможность работать с различными уравнениями, массивами данных и т.д. Как только библиотеки формул будут установлены на компьютер, «питон» сразу же интегрируется с ними.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:
Павел Симонов
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Получить подборку бесплатно
Уже скачали 23681
Кроме того, NumPy подходит для создания анимаций и даже рендеринга 3D-объектов, для которого требуется одновременно осуществлять целый комплекс вычислений.
Для проведения научных расчетов используется специальное дополнение ScientificPython.
Таким образом, Python позволяет не только производить сложные расчеты, но и визуализировать полученные результаты.
Машинное обучение
Для этих целей используется базовый набор инструментов Python, фреймворки, а также дополнительные библиотеки, адаптированные специально для ML. Наибольшей популярностью пользуются:
- TensorFlow (низкоуровневая библиотека, которая дает пользователю возможность самостоятельно создавать алгоритмы).
- Scikit-learn (включает в себя самые распространенные алгоритмы обучения).
Программирование на языке Python позволяет создать код для машинного обучения, без которого невозможно функционирование системы распознавания голосов и лиц. Кроме того, данным языком активно пользуются специалисты в сфере глубокого обучения и разработчики нейросетей.
Автоматизация бизнес-процессов
Пожалуй, это одна из самых популярных областей применения Python. Этот язык используется для написания коротких скриптов, необходимых для того, чтобы автоматизировать рабочие процессы и рутинные процедуры.
Например, на «питоне» можно написать небольшую программку, которая поможет автоматически обрабатывать входящую корреспонденцию: будет фильтровать письма в зависимости от заданных «ключей». Это, в свою очередь, освободит от рутины сотрудника, который ранее занимался данной работой, ведь выполнять аналогичную задачу вручную сложно и долго.
Преимущество языка программирования Python заключается в простом и понятном синтаксисе, который оптимален для создания скриптов. К тому же нет этапа компиляции: завершив написание кода, его можно тут же запустить и отладить.
Геймдев
До сих пор многие считают игровую индустрию чем-то несерьезным. Однако именно развитие видеоигр послужило отправной точкой для создания многих полезных гаджетов, а также дало толчок для развития цифровой графики и т.д. Характеристики языка программирования Python не позволяют написать на нем какой-либо амбициозный проект. Однако с помощью «питона» можно создать определенный набор функций.
Кроме того, используя данный язык, можно написать код для простых приложений и инди-игр. Для мультиплатформенных проектов обычно используют движок Unity, созданный с помощью C# (функционал именно этого языка оптимален для разработки игр).
Изучая Python, необходимо постоянно закреплять теоретические знания на практике: выполнять простые задачи, в частности, создавать простейшие скрипты. Это поможет выбрать направление, в котором наиболее комфортно работать. Дальше предстоит бросить все силы на прокачку специализированных навыков и профессиональное развитие.
Отличительные черты Python
Язык программирования Python обладает рядом особенностей.
Интроспекция
Этим термином обозначается способность программы во время работы получать сведения о каких-либо объектах. Например, можно узнать, к какому классу относится тот или иной объект, какой тип данных используется для работы в данный момент (не стоит забывать про динамическую типизацию), а также список атрибутов и методов, доступных для конкретного объекта.
Опытные кодеры рекомендуют обратить внимание на следующие полезные функции интроспекции:
- dir();
- type();
- hasattr();
- id();
- isinstance().
- Мультиплатформенность
Стоит отметить, что Python в этом плане не уступает Java. Он идет «в коробке» с Linux и SQL Server. Кроме того, интерпретатор «питона» без особых сложностей можно установить на Windows, macOS и iOS. Как показывает практика, язык программирования Python работает на любой операционке (пусть и в 8 раз медленнее, чем, например, Swift на iOS).
Встроенные паттерны проектирования
Самые известные паттерны – Декоратор и Итератор. Первый помогает расширить функциональность без наследования. Чтобы понять, как функционирует второй, необходимо разобраться с принципами работы генераторов и итераторов языка.
Большой выбор стандартных библиотек
Использование Core Python дает бонус в виде доступа к большому набору полезных библиотек. К примеру, в стандартном пакете есть библиотеки, предназначенные для работы с базами данных SQLite, а также json, math, re, random, csv, html и др.
Для вас подарок! В свободном доступе до 05.11 -->
Скачайте ТОП-10
бесплатных нейросетей
для программирования
Помогут писать код быстрее на 25%
Чтобы получить подарок, заполните информацию в открывшемся окне
Читаемость
Удобство программирования на языке Python обусловлено, в том числе, и особенностями его синтаксиса, в частности, форматированием. Отступы (пробелы или табуляция) значительно повышают читаемость кода.
Плюсы и минусы языка программирования Python
Язык программирования Python имеет ряд преимуществ перед другими подобными языками.
- Простота изучения. «Питоном» можно без особых сложностей овладеть с нуля. Сильные стороны данного языка – логичность и простота восприятия. Тем, кто знает английский язык, будет еще проще.
- Востребованность. Кодер, владеющий языком программирования Python, никогда не останется без работы. На «питоне» пишется код для мобильных и консольных приложений, а также создаются веб-утилиты.
- Использование Python в технологиях искусственного интеллекта и машинного обучения. Наличие разнообразных библиотек позволяет управлять нейросетями.
- Кроссплатформенность и универсальность. Python работает на любых операционках и подходит для всех типов контента.
- Открытый исходный код. Принять участие в совершенствовании «питона» могут все желающие.
- Доступность. Можно загуглить множество материалов и официальных документов на русском языке.
- Бесплатное распространение. Это огромный плюс Python: изучение этого языка не требует финансовых вложений ни на начальном этапе, ни в дальнейшем.
Дарим скидку от 60%
на обучение «Разработчик» до 05 ноября
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Таким образом, научиться писать код на языке программирования Python можно в достаточно короткие сроки. Кроме того, данный язык, как уже упоминалось выше, работает под всеми современными операционками. Опытные разработчики сходятся во мнении, что «питон» – хороший вариант для кодинга.
Несмотря на все преимущества, есть у Python и некоторые недостатки. С ними следует ознакомиться каждому программисту перед тем, как приступить к изучению данного инструмента.
- Узкая сфера применения для процессорной оптимизации.
- Относительно медленная скорость работы. Python – не лучший выбор для создания высокопроизводительных и «тяжелых» утилит.
Сравнение Python с другими ЯП
Python vs Java
Python и Java – абсолютные противоположности в плане скорости запуска и выполнения программ. Python – интерпретируемый язык, для которого характерна динамическая типизация. Java, в свою очередь, – это компилируемый язык, обладающий статической типизацией. Программа, созданная на «питоне», запускается быстрее, но выполняется дольше. А приложения на Java, напротив, открываются медленнее, а работают быстрее.
Как известно, с помощью Java можно писать код для кроссплатформенных приложений. Однако и Python совместим с основными операционными системами. Кроме того, оба этих языка программирования используются для разработки системных программ.
Python гораздо проще Java. Изучение «питона» с нуля обычно занимает несколько недель. А чтобы освоить Java, придется потратить несколько месяцев.
Python vs C/C++
Все вышеперечисленные особенности Java (С-подобного языка), относятся и к C/C++. Главное отличие Python заключается в стоимости разработки и качестве программного обеспечения. Создание программного кода на C/C++ требует от специалиста большей квалификации. Поэтому ПО, созданное на данных языках, обладает высоким качеством, и, соответственно, стоит дороже.
Также Python и C/C++ отличаются длиной кода и простотой его восприятия. Программные продукты, созданные на языке программирования Python, порой бывают в 10 раз короче, чем аналогичные на C/C++. Это оказывает существенное влияние на скорость разработки.
Python vs JavaScript
Python и JavaScript занимают первые две позиции в рейтинге TIOBE. Эти языки объектно-ориентированные. Синтаксис Python проще, чем у JavaScript. При этом программы, написанные на «питоне», выполняются медленнее. Поскольку JavaScript обладает высокой производительностью, на нем можно разрабатывать приложения, функционирующие в онлайн-режиме. Таким образом, программирование на языке Python популярно в сфере Data Science и машинного обучения, а JavaScript применяется для веб-разработки.
Python vs PHP
Оба этих языка не вызывают особых сложностей в процессе изучения. Однако у Python более понятный и хорошо читаемый синтаксис. У PHP узкая специализация: он предназначен для создания сайтов. Python, напротив, – универсальный язык программирования, который позволяет писать код для решения широкого круга задач. Тем не менее, программы, созданные с помощью «питона», работают медленнее.
Библиотеки Python
Под библиотекой подразумевается определенный набор часто встречающихся операций на языке программирования Python, которые позволяют каждый раз не писать код с нуля. У любого разработчика есть доступ к стандартной библиотеке, в которой содержится огромное множество популярных функций. К тому же, существует более 137 000 дополнительных библиотек, предназначенных для выполнения специфических задач (в том числе, веб-разработка, Data Science и машинное обучение).
Библиотеки, которые используются чаще всего, собраны ниже.
Она помогает решать различные научные задачи. Применяется для визуализации данных в 2D и 3D измерении. Matplotlib позволяет отображать данные в виде столбчатых и линейных диаграмм. С помощью данного набора функций можно одновременно строить несколько диаграмм, а также переносить графику на любую платформу.
Состоит из оптимизированных и гибких структур, которые необходимы для управления данными временных рядов и структурированными данными (таблицы и массивы). Pandas помогает читать, записывать, объединять, фильтровать и группировать информацию. Без этой библиотеки не обойтись тем программистам, которые работают в сфере Data Science, анализа данных и машинного обучения.
Функции, собранные в данной библиотеке, облегчают процесс создания массивов и работы с ними. Кроме того, NumPy позволяет управлять логическими фигурами и осуществлять операции линейной алгебры. Эта библиотека может быть интегрирована и с другими языками программирования (например, C/C++).
Состоит из полезных функций, которые требуются для веб-разработки. Они помогают отправлять HTTP-запросы, добавлять заголовки, устанавливать параметры URL, дополнять данные, а также выполнять многие другие задачи, связанные с созданием интернет-приложений.
Данная библиотека позволяет обрабатывать изображения при работе с машинным зрением. С ее помощью можно одновременно читать и записывать изображения, преобразовывать «картинки» из 2D в 3D, а также захватывать и анализировать кадры из видео.
Это библиотека глубокой нейросети Python, в которой содержатся функции, предназначенные для обработки данных, их визуализации и т.д. Keras поддерживается многими нейросетями. Данная библиотека обладает модульной структурой, которая гарантирует гибкость в процессе создания инновационных приложений.
Синтаксис языка программирования Python
Отличительные черты, которые присущи синтаксису языка программирования Python – четкость, последовательность, продуманная модульность и масштабируемость. Благодаря этим особенностям программный код, созданный на «питоне», легко читается.
Операторы
Самые распространенные команды перечислены ниже.
- Условный оператор if (если). Альтернативный блок – else (иначе). В случае, если присутствуют несколько альтернатив, можно использовать команду elif (else if).
- Оператор цикла while (пока).
- Оператор цикла for (для). Внутри цикла можно применять break (для прерывания цикла) и continue (для перехода сразу к следующей итерации).
- Оператор определения класса class.
- Оператор определения функции, метода или генератора def. Внутри можно пользоваться командой return (возврат) или, в случае работы с генератором, yield (давать).
- Оператор обработки исключений try – except – else или try – finally (начиная с версии 2.5 команды finally, except и else можно использовать в одном блоке).
- Оператор pass применяется для пустых блоков кода.
Только до 2.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы зарегистрироваться на бесплатный интенсив и получить в подарок подборку файлов от GeekBrains, заполните информацию в открывшемся окне
Как известно, в Python блоки кода выделяются с помощью отступов (пробелов и табуляций). Соответственно, при программировании на языке Python не используются операторные скобки begin/end (как в Паскаль) и фигурные скобки (как в C/C++). Благодаря этому сокращается количество строк и символов в коде. Не стоит забывать о том, что правильность выполнения программы зависит, в том числе, и от начальных пробелов. По мнению некоторых разработчиков, такое поведение является неинтуитивным и неудобным.
Выражения
Выражение – полноправный оператор в языке программирования Python. Благодаря составу, особенностям синтаксиса, ассоциативности и приоритету операций можно свести к минимуму количество скобок.
Отдельного внимания заслуживает операция форматирования для строк (она напоминает printf() из C/C++, которая использует тот же символ, что и взятие остатка от деления).
>>> print («Здравствуй, %s!» % «Мир»)
Кроме того, в Python можно использовать удобные цепочечные сравнения. Например:
Логические операции (or или and) на языке программирования Python являются «ленивыми». Это значит, что, если для вычисления истинного значения достаточно первого операнда, данный операнд и представляет собой результат. В других случаях необходимо вычислить второй операнд. Это свойство «питона» активно применялось вплоть до версии 2.5 вместо условной конструкции:
Встроенные типы данных обладают специальным синтаксисом для своих литералов, которые записаны в исходном коде констант:
«строка» + ‘строка’ «»»тоже строка»»» u»Юникод-строка»
True or False # булевы литералы
3.14 # число с плавающей запятой
012 + 0xA # числа в восьмеричной и шестнадцатеричной системах счисления
1 + 2j # целое число и мнимое число
lambda x: x**2 # неименованная функция
Для работы со списками и иными последовательностями в Python существует целый набор операций над срезами. Отличительная черта данного языка – индексация (тем кодерам, которые только приступили к изучению «питона», она зачастую кажется странной).
Согласованность этой операции раскрывается по мере использования. Индексы, присущие каждому элементу списка, начинаются с нуля. Запись среза s[N:M] указывает, что в него попадают все элементы от N включительно до M исключительно.
Имена
Имя (идентификатор) может начинаться с любой буквы латинского алфавита (при этом допускается использование верхнего и нижнего регистра, а также подчеркивания). Имена, которые начинаются с подчеркивания, обладают специальным значением. Нельзя забывать о том, что в качестве идентификатора нельзя использовать ключевые слова (их перечень можно уточнить с помощью important keyword и print keyword.kwlist). Кроме того, не стоит переопределять встроенные имена.
Язык программирования Python подразумевает, что в каждой точке программы интерпретатору доступны три пространства имен (отображение имен в объекты) – локальное, глобальное и встроенное.
Области видимости имен могут быть вложены друг в друга: внутри определяемой функции видны имена из окружающего блока кода. Опытные кодеры рекомендуют уделить внимание нюансам работы с областями видимости и связыванием имен. Практические аспекты подробно изложены в методичках по программированию на языке Python.
Строки документации
В Python код документируется с помощью механизма pydoc. Каждый модуль, класс и функция начинается со строки документации – docstring. При этом они остаются в исходном коде во время выполнения программы. К тому же, в данный язык встроен доступ к документации (этим свойством пользуются современные IDE).
Преимущество «питона» заключается в том, что всегда можно получить помощь, сгенерировать гипертекстовую документацию по целому модулю, а также в автоматическом режиме протестировать модуль с помощью doctest.
Директивы
Начиная с версии 2.3, чтобы в процессе написания программы использовать в тексте символы, которые не входят в ASCII, нужно в начале модуля прописывать кодировку исходного кода. К примеру:
Далее в Unicode-литералах можно пользоваться кириллицей.
Примеры кода Python
Ниже представлены несколько примеров кода, написанного на языке программирования Python.
Вычисление времени, которое требуется для выполнения функции или программы:
timetaken = end_time — start_time
print(«Your program takes: «, timetaken) # 0.0345
Проверка повторяющихся значений в списке:
return len(lst) != len(set(lst))
my_list = [«leaf», «cherry», «fish»]
my_list.sort() # [‘cherry’, ‘fish’, ‘leaf’]
my_list1.sort() # [‘A’, ‘B’, ‘C’, ‘D’]
print(sorted(my_list2, reverse=True)) # [5, 4, 3, 2, 1]
Вычисление объема памяти, который требуется для переменной в языке программирования Python:
Полезная литература для изучения Python
Перед началом программирования на языке Python опытные кодеры рекомендуют ознакомиться со специализированной литературой по данной тематике.
Это займет немало времени, а также потребует много терпения. Однако результат того стоит: именно с помощью книг новички имеют возможность понять общую картину концепций программирования.
Стоит обратить внимание следующую подборку книг.
- Изучаем Python (Марк Лутц)
Этот учебник уже трижды был переиздан. Он написан максимально простым и понятным языком, а также позволяет заниматься в комфортном темпе. В «Изучаем Python» есть информация об основных типах объектов, которые используются в данном языке программирования. А также порядок их создания и нюансы работы с ними. Кроме того, функции в учебнике рассмотрены как основной процедурный элемент языка программирования Python.
Почему питон долго считает
МЕРОПРИЯТИЯ
Всероссийский хакатон по биометрии
Комментарии
Популярные По порядку
Не удалось загрузить комментарии.
ВАКАНСИИ
Методист-педагогический дизайнер в Proglib.Academy
по итогам собеседования
Преподаватель на курс БД SQL в Proglib.Academy
по итогам собеседования
ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ
ООП на Python: концепции, принципы и примеры реализации
Программирование на Python допускает различные методологии, но в его основе лежит объектный подход, поэтому работать в стиле ООП на Python очень просто.
3 самых важных сферы применения Python: возможности языка
Существует множество областей применения Python, но в некоторых он особенно хорош. Разбираемся, что же можно делать на этом ЯП.
Программирование на Python: от новичка до профессионала
Пошаговая инструкция для всех, кто хочет изучить программирование на Python (или программирование вообще), но не знает, куда сделать первый шаг.