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

История языка

Разработка началась в 1980-х году, а завершилась она в 1991. Язык Python был создан Гвидо ван Россумом. Хоть основным символом «Питона» является змея, назван он был так в честь комедийного американского шоу.

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

Одним из факторов, которые позволили стать «Питону» достаточно известным, является дизайн. Многими весьма успешными специалистами он признается одним из лучших.

Особенности «Питона»

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

Многие синтаксические системы были созданы с опорой на объектно-ориентированное программирование. Не исключением является и язык Python. Для чего же именно он появился на свет? Он облегчит обучение новичкам, поможет вспомнить некоторые элементы уже квалифицированным сотрудникам.

Синтаксис языка

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

Традиционные операторы:

  • При задавании условия следует использовать конструкцию if-else. Если таких строк слишком много, можно вписывать команду elif.
  • Class предназначен для понимания класса.
  • Один из простых операторов - pass. Он ничего не делает, вписывается для пустых блоков.
  • Цикловыми командами являются while и for.
  • Функция, метод и генератор определяется благодаря def.

Кроме одиночных слов, в качестве операторов язык программирования Python позволяет использовать и выражения. Благодаря использованию цепочек строк можно уменьшить количество отдельных команд и скобок. Используются и так называемые ленивые вычисления, т. е. те, которые выполняются лишь тогда, когда того требует условие. К ним относятся and и or.

Процесс написания программ

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

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

После каждой строки необходимо ставить «Ентер». Ответ будет выводиться непосредственно после его нажатия.

Данные, используемые «Питоном»

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

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

  • Integer. Речь идет о целых числах, имеющих как отрицательное, так и положительное значение. Ноль также входит в данный тип.
  • Для того чтобы интерпретатор понял, что работает с дробными частями, следует задать тип float point. Как правило, им пользуются в случае использования чисел с варьирующейся точкой. Следует помнить, что при написании программы нужно придерживаться записи «3.25», а не использовать запятую «3,25».
  • В случае добавления строк язык программирования Python позволяет добавить тип string. Зачастую слова или фразы заключаются в одинарные или

Недостатки и преимущества

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

Недостатков у «Питона» практически нет. Единственный серьезный минус - медлительность при выполнении алгоритма. Да, если сравнивать его с «Си» или «Джава», он, откровенно говоря, черепашка. Объясняется это тем, что данный

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

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

Сейчас над улучшением «Питона» работает не одна группа программистов, поэтому не факт, что код, написанный на С++ будет лучше, чем тот, который создан при помощи Python.

С какой версией лучше работать?

Сейчас широко используются сразу две версии такой синтаксической системы, как язык Python. Для начинающих выбор между ними будет достаточно трудным. Следует заметить тот факт, что 3.х все еще находится на разработке (хотя и выпущен в массы), в то время как 2.х - полностью завершенная версия. Многие советуют использовать 2.7.8, так как она практически не лагает и не сбивается. В 3.х версии нет радикальных изменений, поэтому в любое время свой код можно перенести в среду программирования с обновлением. Чтобы скачать необходимую программу, следует зайти на официальный сайт, выбрать свою операционную систему и дождаться окончания загрузки.

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

Python — описание языка, которое дали в Foundation описывает Python :

Python – это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает в себя модули, исключения, динамическую типизацию, высокоуровневые динамические типы данных и классы. Python сочетает в себе отличную производительность с понятным синтаксисом. В нем реализованы интерфейсы ко многим системным вызовам и библиотекам, а также различным оконным системам и он расширяем с помощью C и C++. Python используется как язык расширения для приложений, которым нужен программный интерфейс. И наконец, Python — это кроссплатформенный язык: он работает на многих версиях Unix, на Mac и на компьютерах под управлением MS-DOS, Windows, Windows NT и OS/2.

Какой язык программирования изучить первым?

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

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

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

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

Язык Python для начинающих универсален. Вы можете автоматизировать рабочие процессы, создавать сайты, а также настольные приложения и игры с помощью Python . К слову, спрос на разработчиков Python (PostgreSQL, OOP, Flask, Django ) резко вырос за последние несколько лет в таких компаниях, как Instagram , Reddit , Tumblr , YouTube и Pinterest .

Высокоуровневый язык общего назначения

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

Интерпретируемый язык

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

Читаемость кода является ключевым моментом

Простой, легкий в изучении синтаксис Python делает упор на читаемость и задает хороший стиль программирования. С Python вы можете выразить свою концепцию меньшим количеством строк кода. Этот язык также заставляет вас обдумывать логику программы и алгоритмы. В связи с этим он часто используется как скриптовый или интегрирующий язык (glue language ), чтобы связать существующие компоненты вместе и писать большие объемы легко читаемого и работоспособного кода в короткие промежутки времени.

Это просто весело

Нельзя назвать язык программирования в честь Монти Пайтона , не имея чувства юмора. Более того, было проведено тестирование для сравнения времени, необходимого для написания простого скрипта на различных языках (Python, Java, C, J, BASIC ):

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

Перевод статьи «Why Learn Python? » был подготовлен дружной командой проекта .

Хорошо Плохо

Этот материал расчитан на тех, кто уже знаком с программированием и хочет освоить язык программирования Python. Он расчитан на то, чтобы за 10 минут показать вам особенности языка Python, особенности синтаксиса и основные принципы работы с Python на примерах. Здесь нет никакой «воды» — информации, которая не имеет непосредственного отношения к языку программирования. Начнем!

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

Объявление переменных необязательно, названия восприимчивы к регистру (var и VAR — две разные переменные).

Язык Python объектно-ориентирован, все в языке является объектом.

Получение справки

Справка (помощь) в Python всегда доступна прямо в интерпретаторе. Если вы хотите знать, как объект работает, вызовите help(). Также полезной инструкцией является dir() , которая показывает все методы объекта, и свойство объектов .__doc__ , которая покажет вам строку документации:

>>> help(5) Help on int object: (etc etc) >>> dir(5) ["__abs__", "__add__", ...] >>> abs.__doc__ "abs(number) -> number Return the absolute value of the argument."

Синтаксис языка Python

В Python нет конструкций для завершения блоков (таких как описание класса или функции, например) — блоки определяются с использованием отступов. Увеоичение отступа в начале блока, уменьшение — в конце блока. Инстукции, которые предполагают наличие отступов, завершаются символом двоеточия (:). Если после инструкции начала блока у вас пока нет кода, вставьте оператор pass для прохождения синтаксической проверки.

While rangelist == 1: pass

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

Значения присваиваются с использованием знака равенства («=») (по факту объектам присваиваются имена в процессе).

Проверка на различие выполняется с двумя символами равенства («==»).

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

Можно присвоить значение неспольким переменным в одной строке. Примеры:

>>> myvar = 3 >>> myvar += 2 >>> myvar 5 >>> myvar -= 1 >>> myvar 4 """This is a multiline comment. The following lines concatenate the two strings.""" >>> mystring = "Hello" >>> mystring += " world." >>> print mystring Hello world. # This swaps the variables in one line(!). # It doesn"t violate strong typing because values aren"t # actually being assigned, but new objects are bound to # the old names. >>> myvar, mystring = mystring, myvar

Типы данных в Python

В Python доступны такие типы данных, как списки (lists), кортежи (tuples) и словари (dictionaries). Также доступны множества — с использованием модуля sets в версиях до Python 2.5 и встроены в язык в более поздних.

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

Словари — это ассоциативные массивы, в которых доступ к данным осуществляется по ключу.

Кортежи — это неизменяемые одномерные массивы.

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

Индекс первого элемента — 0. Негативное значение индекса начинает отсчет от последнего к первому, [-1] укажет на последний элемент.

Переменные могут указывать на функции.

>>> sample = , ("a", "tuple")] >>> mylist = ["List item 1", 2, 3.14] >>> mylist = "List item 1 again" # We"re changing the item. >>> mylist[-1] = 3.21 # Here, we refer to the last item. >>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14} >>> mydict["pi"] = 3.15 # This is how you change dictionary values. >>> mytuple = (1, 2, 3) >>> myfunction = len >>> print myfunction(mylist) 3

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

Посмотрите примеры:

>>> mylist = ["List item 1", 2, 3.14] >>> print mylist[:] ["List item 1", 2, 3.1400000000000001] >>> print mylist ["List item 1", 2] >>> print mylist[-3:-1] ["List item 1", 2] >>> print mylist # Adding a third parameter, "step" will have Python step in # N item increments, rather than 1. # E.g., this will return the first item, then go to the third and # return that (so, items 0 and 2 in 0-indexing). >>> print mylist[::2] ["List item 1", 3.14]

Строки в Python

Для обозначения строки может использоваться апостроф (‘) или двойные кавычки (double quote — «). Благодаря этому вы можете иметь кавычки внутри строки, обозначенной с помощью апострофов (например ‘He said «hello».’ — правильная строка).

Многострочные строки обозначаются с использованием тройного апострофа или кавычек ("""). Python поддерживает юникод из коробки. При этом во второй версии Python для обозначения строки, содержажей unicode, используется символ (u): u»This is a unicode string». В Python3 все строки содержат юникод. Если в Python3 вам нужна последовательность байтов, которой была по сути строка в предыдущих версиях, используется символ (b): b»This is a byte string».

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

>>>print "Name: %s\ Number: %s\ String: %s" % (myclass.name, 3, 3 * "-") Name: Poromenos Number: 3 String: --- strString = """This is a multiline string.""" # WARNING: Watch out for the trailing s in "%(key)s". >>> print "This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"} This is a test.

Инструкции для контроля потока — if, for, while

Для контроля порядка выполнения программы используются инстукции if , for и while . В Python нет switch или case , вместо них используется if . For используется для прохождения по элементам списка (или кортежа). Для получения последовательности чисел, используйте range() . Для прерывания выполнение цикла используется break .

Синтаксис этой конструкции следующий:

Rangelist = range(10) >>> print rangelist for number in rangelist: # Check if number is one of # the numbers in the tuple. if number in (3, 4, 7, 9): # "Break" terminates a for without # executing the "else" clause. break else: # "Continue" starts the next iteration # of the loop. It"s rather useless here, # as it"s the last statement of the loop. continue else: # The "else" clause is optional and is # executed only if the loop didn"t "break". pass # Do nothing if rangelist == 2: print "The second item (lists are 0-based) is 2" elif rangelist == 3: print "The second item (lists are 0-based) is 3" else: print "Dunno" while rangelist == 1: pass

Функции в Python

Функции объявляются с использованием ключевого слова «def». Необязательные аргументы следуют в объявлении функции после обязательных и им назначается значение по-умолчанию. При вызове функции, можно передавать аргументы через указание их имени и значения, при этом пропуская часть необязательных аргументов или располагая их в порядке, отличном от объявленном в функции.

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

Лямбда-функции (lambda functions) — специальные фукции, обрабатывающие один аргумент.

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

Примеры кода:

# Same as def funcvar(x): return x + 1 funcvar = lambda x: x + 1 >>> print funcvar(1) 2 # an_int and a_string are optional, they have default values # if one is not passed (2 and "A default string", respectively). def passing_example(a_list, an_int=2, a_string="A default string"): a_list.append("A new item") an_int = 4 return a_list, an_int, a_string >>> my_list = >>> my_int = 10 >>> print passing_example(my_list, my_int) (, 4, "A default string") >>> my_list >>> my_int 10

Классы Python

Python поддерживает ограниченную форму множественного наследования в классах.

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

Мы также можем назначать произвольные имена экземплярам класса. Просмотрите примеры:

Class MyClass(object): common = 10 def __init__(self): self.myvariable = 3 def myfunction(self, arg1, arg2): return self.myvariable # This is the class instantiation >>> classinstance = MyClass() >>> classinstance.myfunction(1, 2) 3 # This variable is shared by all classes. >>> classinstance2 = MyClass() >>> classinstance.common 10 >>> classinstance2.common 10 # Note how we use the class name # instead of the instance. >>> MyClass.common = 30 >>> classinstance.common 30 >>> classinstance2.common 30 # This will not update the variable on the class, # instead it will bind a new object to the old # variable name. >>> classinstance.common = 10 >>> classinstance.common 10 >>> classinstance2.common 30 >>> MyClass.common = 50 # This has not changed, because "common" is # now an instance variable. >>> classinstance.common 10 >>> classinstance2.common 50 # This class inherits from MyClass. The example # class above inherits from "object", which makes # it what"s called a "new-style class". # Multiple inheritance is declared as: # class OtherClass(MyClass1, MyClass2, MyClassN) class OtherClass(MyClass): # The "self" argument is passed automatically # and refers to the class instance, so you can set # instance variables as above, but from inside the class. def __init__(self, arg1): self.myvariable = 3 print arg1 >>> classinstance = OtherClass("hello") hello >>> classinstance.myfunction(1, 2) 3 # This class doesn"t have a .test member, but # we can add one to the instance anyway. Note # that this will only be a member of classinstance. >>> classinstance.test = 10 >>> classinstance.test 10

Исключения в Python

Исключения в Python обрабатываются в блоках try-except :

Def some_function(): try: # Division by zero raises an exception 10 / 0 except ZeroDivisionError: print "Oops, invalid." else: # Exception didn"t occur, we"re good. pass finally: # This is executed after the code block is run # and all exceptions have been handled, even # if a new exception is raised while handling. print "We"re done with that." >>> some_function() Oops, invalid. We"re done with that.

Импорт модулей в Python

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

Import random from time import clock randomint = random.randint(1, 100) >>> print randomint 64

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

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

Import pickle mylist = ["This", "is", 4, 13327] # Open the file C:\\binary.dat for writing. The letter r before the # filename string is used to prevent backslash escaping. myfile = open(r"C:\\binary.dat", "w") pickle.dump(mylist, myfile) myfile.close() myfile = open(r"C:\\text.txt", "w") myfile.write("This is a sample string") myfile.close() myfile = open(r"C:\\text.txt") >>> print myfile.read() "This is a sample string" myfile.close() # Open the file for reading. myfile = open(r"C:\\binary.dat") loadedlist = pickle.load(myfile) myfile.close() >>> print loadedlist ["This", "is", 4, 13327]

Разное

  • Условия могут склеиваться, например 1 < a < 3 проверит, что a одновременно меньше 3 и больше 1.
  • Вы можете использовать del для удаления переменных или элементов в массивах.
  • Списки дают очень сильные возможности для манипуляции данными. Вы можете составить выражение с использованием for и последующими инструкциями if или for:
>>> lst1 = >>> lst2 = >>> print >>> print # Check if a condition is true for any items. # "any" returns true if any item in the list is true. >>> any(]) True # This is because 4 % 3 = 1, and 1 is true, so any() # returns True. # Check for how many items a condition is true. >>> sum(1 for i in if i == 4) 2 >>> del lst1 >>> print lst1 >>> del lst1
  • Глобальные переменные объявляются вне функций и могут читаться без специальных объявлений внутри, но если вы хотите записывать их, вы должны объявить из в начале функции с использованием специального ключевого слова «global», иначе Python назначит новое значение локальной переменной:
number = 5 def myfunc(): # This will print 5. print number def anotherfunc(): # This raises an exception because the variable has not # been bound before printing. Python knows that it an # object will be bound to it later and creates a new, local # object instead of accessing the global one. print number number = 3 def yetanotherfunc(): global number # This will correctly change the global. number = 3

Как выучить язык программирования Python

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

Если вам недостаточно изложенной информации — просмотрите расширенный материал с описанием языка программирования Python — — в нем сведения о языке изложены более подробно.

Среди других материалов рекомендую Learn Python The Hard Way . И, конечно The Python 2 Tutorial и The Python 3 Tutorial .

Большая благодарность Stavros Korokithakis за его отличный tutorial «Learn Python in 10 minutes» .

Если вы хотите что-то улучшить в этом материале — пожалуйста напишите в комментариях.

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

Билл Карвн, SQL-разработчик, консультант, тренер и автор

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

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

Большая часть программистов сегодня использует языки более высокого уровня – им необходимо быть боле производительными. Языки высшего уровня могут компилироваться в машинный код (C или C++), а могут быть скомпилированы в байткод с независимой архитектурой и запущены в виртуальной машине (Java) ил же быть обработаны (JavaScript, PHP, Ruby, Python, Perl и др.).

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

Билл Поучер, исполнительный директор ICPC, программное обеспечение в сферах энергетики, синтетической генетики и др.

Изучи Python. Обеспечь себя опытом в программировании. В этом языке есть своя элегантность.

Изучи C как язык для Unix-машин. Понимание UNIX относительно несложно.

Изучи MIX, чтобы понимать Knuth.

Изучи Java, чтобы не испытывать трудности в работе с другими, а также овладеть объектно-ориентированным программированием.

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

Изучи LISP, чтобы укрепить свое понимание рекурсии.

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

Шива Шинде, на языке Python легко кодить, но его тяжело читать

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

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

2. Полный функционал

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

3. Серьезные библиотеки научных данных

  • Python обладает значительными научными библиотеками с огромным количеством данных для использования.
  • Основой этих научных библиотек является SciPy Ecosystem, которая даже проводит свои собственные конференции.
  • Pandas и Matplotlib - это составляющие SciPy. Они обеспечивают превосходные данные по самым разным темам, например, машинное обучение, интеллектуальный анализ текста и сетевой анализ.

Эрнан Сулаж, прагматичный программист

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

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

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

Магнус Лычка, разработчик программного обеспечения и консультант в Гетеборге

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

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

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

Программирование на Python

Часть 1. Возможности языка и основы синтаксиса

Серия контента:

Стоит ли изучать Python?

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

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

Изучить в совершенстве два таких языка как Java и C++ достаточно сложно и заняло бы много времени; кроме того, многие аспекты этих языков противоречат друг другу. В то же время Python идеально подходит на роль второго языка, так как он сразу же усваивается благодаря уже имеющимся знаниям в ООП, и тому, что его возможности не конфликтуют, а дополняют опыт, накопленный при работе с другим языком программирования.

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

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

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

Архитектура Python

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

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

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

Также Python является языком общего назначения, поэтому может применяться практически в любой области разработки ПО (standalone, клиент-сервер, Web-приложения) и в любой предметной области. Кроме того, Python легко интегрируется с уже существующими компонентами, что позволяет внедрять Python в уже написанные приложения.

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

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

Среда исполнения Python

Как известно, все кросс-платформенные языки программирования построены по одной модели: это действительно переносимый исходный код и среда исполнения (runtime environment), которая не является переносимой и специфична для каждой конкретной платформы. В эту среду исполнения обычно входит интерпретатор, который исполняет исходный код, и различные утилиты, необходимые для сопровождения приложения – отладчик, обратный ассемблер и т.д.

В среду исполнения Java дополнительно входит компилятор, так как исходный код необходимо скомпилировать в байт-код для виртуальной Java-машины. В среду исполнения Python входит только интерпретатор, который одновременно является и компилятором, однако компилирует исходный код Python непосредственно в машинный код целевой платформы.

На данный момент существуют три известных реализации среды исполнения для Python: CPython, Jython и Python.NET. Как можно догадаться из названия, первая среда реализована на языке C, вторая на языке Java, а последняя – на платформе.NET.

Среда исполнения CPython обычно называется просто Python, и когда говорят о Python, то чаще всего имеется в виду именно эта реализация. Эта реализация состоит из интерпретатора и модулей расширения, написанных на языке C, и может использоваться на любой платформе, для которой доступен стандартный компилятор C. Кроме того, существуют уже скомпилированные версии среды исполнения для различных операционных систем, включая различные версии OC Windows и различные дистрибутивы Linux. В этой и последующих статьях будет рассматриваться именно CPython, если иное не оговаривается отдельно.

Среда исполнения Jython – это реализация Python для работы с виртуальной Java-машиной (JVM). Поддерживается любая версия JVM, начиная с версии 1.2.2 (текущая версия Java – 1.6). Для работы с Jython требуется установленная Java-машина (среда исполнения Java) и определенное знание языка программирования Java. Уметь писать исходный код на языке Java не обязательно, однако придется иметь дело c JAR-файлами и Java-апплетами, а также документацией в формате JavaDOC.

Какую версию среды выбрать – зависит исключительно от предпочтений программиста, вообще же рекомендуется держать на компьютере и CPython, и Jython, так как они не конфликтуют между собой, а взаимно дополняют друг друга. Среда CPython работает быстрее, так как нет промежуточного уровня в виде JVM; кроме того, обновленные версии Python сначала выпускают именно в виде среды CPython. Однако Jython может использовать любой класс Java в качестве модуля расширения и работать на любой платформе, для которой существует реализация JVM.

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

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

Прежде чем начать использовать Python, необходимо установить его среду исполнения – в данной статье это CPython и соответственно интерпретатор python. Существуют различные способы установки: опытные пользователи могут сами скомпилировать Python из его общедоступного исходного кода, также можно загрузить с Web-сайта www.python.org уже готовые исполняемые файлы для конкретной операционной системы, наконец, многие дистрибутивы Linux поставляются с уже предустановленным интерпретатором Python. В этой статье используется версия Python 2.x для ОС Windows, однако представленные примеры можно запускать на любой версии Python.

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

  • PATH . В этой переменной должен содержаться путь к каталогу, где установлен Python, чтобы его могла найти операционная система.
  • PYTHONHOME . Эта переменная должна содержать только путь к каталогу, где установлен Python. Также в этом каталоге должен содержаться подкаталог lib, в котором будет выполняться поиск стандартных модулей Python.
  • PYTHONPATH . Переменная со списком каталогов, содержащих модули расширения, которые будут подключаться к Python (элементы списка должны разделяться системным разделителем).
  • PYTHONSTARTUP . Не обязательная переменная, определяющая путь к сценарию Python, который должен выполняться каждый раз при запуске интерактивного сеанса интерпретатора Python.

Командная строка для работы с интерпретатором имеет следующую структуру.

PYTHONHOME\python (опции) [ -с команда | файл со сценарием | - ] {аргументы}

Интерактивный режим работы Python

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

Значение вычисленного выражения сохраняется в специальную переменную с именем «Одиночное подчеркивание» (_), так что его можно использовать в последующих выражениях. Завершить интерактивный сеанс можно сочетанием клавиш Ctrl–Z в ОС Windows или Ctrl–D в ОС Linux.

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

Для проверки правильности установки и работоспособности Python можно выполнить следующие команды:

c:\> python- v
c:\> python –c “import time; print time.asctime()”

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

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

Основы синтаксиса Python

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

Далее приведен очень важный аспект, который может показаться странным программистам, изучающим Python в качестве второго языка программирования. Дело в том, что в Python нет символа, который бы отвечал за отделение выражений друг от друга в исходном коде, как, например, точка с запятой (;) в C++ или Java. Точка с запятой позволяет разделить несколько инструкций, если они находятся на одной физической строке. Также отсутствует такая конструкция, как фигурные скобки {}, позволяющая объединить группу инструкций в единый блок.

Физические строки разделяются самим символом конца строки, но если выражение слишком длинное для одной строки, то две физических строки можно объединить в одну логическую. Для этого необходимо в конце первой строки ввести символ обратного слеша (\), и тогда следующую строку интерпретатор будет трактовать как продолжение первой, однако при этом нельзя, чтобы на первой строке за символом \ находились бы другие символы, например, комментарий с #. Для выделения блоков кода используются исключительно отступы. Логические строки с одинаковым размером отступа формируют блок, и заканчивается блок в том случае, когда появляется логическая строка с отступом меньшего размера. Именно поэтому первая строка в сценарии Python не должна иметь отступа. Усвоение этих несложных правил поможет избежать большинства ошибок, связанных с освоением нового языка.

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

Типы данных, используемых в Python

Типы данных, используемых в Python, также совпадают с другими языками – целые и вещественные типы данных; дополнительно поддерживается комплексный тип данных – с вещественной и мнимой частью (пример такого числа – 1.5J или 2j, где J представляет собой квадратный корень из -1). Python поддерживает строки, которые могут быть заключены в одинарные, двойные или тройные кавычки, при этом строки, как и в Java, являются immutable-объектами, т.е. не могут изменять свое значение после создания.

Есть в Python и логический тип данных bool c двумя вариантами значения – True и False. Однако в старых версиях Python такого типа данных не было, и, кроме того, любой тип данных мог быть приведен к логическому значению True или False. Все числа, отличные от нуля, и непустые строки или коллекции с данными трактовались как True, а пустые и нулевые значения рассматривались как False. Эта возможность сохранилась и в новых версиях Python, однако для повышения читаемости кода рекомендуется использовать для логических переменных тип bool. В то же время, если необходимо поддерживать обратную совместимость со старыми реализациями Python, то в качестве логических переменных стоит использовать 1 (True) или 0 (False).

Функциональность для работы с наборами данных

В Python определены три типа коллекций для хранения наборов данных:

  • кортеж (tuple);
  • список (list);
  • словарь (dictionary).

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

Список – это изменяемая упорядоченная последовательность элементов. Элементы списка также разделяются запятыми, но задаются уже в квадратных скобках. Для создания списков предлагается функция list().

Словарь является хеш-таблицей, сохраняющей элемент вместе с его идентификатором-ключом. Последующий доступ к элементам выполняется тоже по ключу, поэтому единица хранения в словаре – это пара объект-ключ и связанный с ним объект-значение. Словарь – это изменяемая, но не упорядоченная коллекция, так что порядок элементов в словаре может меняться со временем. Задается словарь в фигурных скобках, ключ отделяется от значения двоеточием, а сами пары ключ/значение разделяются запятыми. Для создания словарей доступна функция dict().

В листинге 1 приведены примеры различных коллекций, доступных в Python.

Листинг 1. Виды коллекций, доступные в Python
(‘w’,‘o’,‘r’,‘l’,‘d’) # кортеж из пяти элементов (2.62,) # кортеж из одного элемента [“test”,"me"] # список из двух элементов # пустой список { 5:‘a’, 6:‘b’, 7:‘c’ } # словарь из трех элементов с ключами типа int

Определение функций в Python

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

Синтаксис определения функций в Python крайне простой; с учетом изложенных выше требований:

def ИМЯ_ФУНКЦИИ(параметры): выражение № 1 выражение № 2 ...

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

ИМЯ_ФУНКЦИИ(параметры)

Есть только несколько моментов, специфичных для Python, которые стоит учитывать. Как и в Java, примитивные значения передаются по значению (в функцию попадает копия параметра, и она не может изменить значение, установленное до вызова функции), а сложные объектные типы передаются по ссылке (в функцию передается ссылка и она вполне может изменить объект).

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

#функция, выполняющая деление нацело – с помощью оператора // def foo(delimoe, delitel): return delimoe // delitel print divide(50,5) # результат работы: 10 print divide(delitel=5, delimoe=50) # результат работы: 10

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

Если функция очень простая и состоит из одной строки, то ее можно определить прямо на месте использования, в Python подобная конструкция называется лямбда-функцией (lambda). lambda-функция – это анонимная функция (без собственного имени), телом которой является оператор return, возвращающий значение некоторого выражения. Такой подход может оказаться удобным в некоторых ситуациях, однако стоит заметить, что повторное использование подобных функций невозможно («где родился, там и пригодился»).

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

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



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png

Разрешается копирование материалов сайта с обязательной ссылкой на makewap.ru