Программа для программирование на питоне с нуля. §1 Язык программирования Python

Введение


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

В связи с этим, определенный интерес представляет рассмотрение сравнительно нового языка программирования Python (пайтон), который был создан его автором Гвидо ван Россумом (Guido van Rossum) в начале 90-х годов.

Общие сведения о Python. Достоинства и недостатки


Python является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, тьюплы).

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

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

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

  • Numerical Python - расширенные математические возможности, такие как манипуляции с целыми векторами и матрицами;
  • Tkinter - построение приложений с использованием графического пользовательского интерфейса (GUI) на основе широко распространенного на X-Windows Tk-интерфейса;
  • OpenGL - использование обширной библиотеки графического моделирования двух- и трехмерных объектов Open Graphics Library фирмы Silicon Graphics Inc. Данный стандарт поддерживается, в том числе, в таких распространенных операционных системах как Microsoft Windows 95 OSR 2, 98 и Windows NT 4.0.
Недостатки языка.
Единственным недостатком, замеченным автором, является сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью. Однако, на наш взгляд, это с лихвой окупается достоинствами языка при написании программ не очень критичных к скорости выполнения.

Обзор особенностей


1. Python, в отличие от многих языков (Pascal, C++, Java, и т.д.), не требует описания переменных. Они создаются в месте их инициализации, т.е. при первом присваивании переменной какого-либо значения. Значит, тип переменной определяется типом присваиваемого значения. В этом отношении Python напоминает Basic.
Тип переменной не является неизменным. Любое присваивание для нее корректно и это приводит лишь к тому, что типом переменной становится тип нового присваиваемого значения.

2. В таких языках как Pascal, C, C++ организация списков представляла некоторые трудности. Для их реализации приходилось хорошо изучать принципы работы с указателями и динамической памятью. И даже имея хорошую квалификацию, программист, каждый раз заново реализуя механизмы создания, работы и уничтожения списков, мог легко допустить трудноуловимые ошибки. Ввиду этого были созданы некоторые средства для работы со списками. Например, в Delphi Pascal имеется класс TList, реализующий списки; для С++ разработана библиотека STL (Standard Template Library), содержащая такие структуры как векторы, списки, множества, словари, стеки и очереди. Однако, такие средства имеются не во всех языках и их реализациях.

Одной из отличительных черт Python является наличие таких встроенных в сам язык структур как тьюплы (tuple), списки (list) и словари (dictionary), которые иногда называют картами (map). Рассмотрим их поподробней.

  1. Тьюпл . Он чем-то напоминает массив: состоит из элементов и имеет строго определенную длину. Элементами могут быть любые значения - простые константы или объекты. В отличие от массива, элементы тьюпла не обязательно однородны. А тем, что отличает тьюпл от списка (list) является то, что тьюпл не может быть изменен, т.е. мы не можем i-тому элементу тьюпла присвоить что-то новое и не можем добавлять новые элементы. Таким образом, тьюпл можно назвать списком-константой. Синтаксически тьюпл задается путем перечисления через запятую всех элементов, и все это заключено в круглые скобки:

  2. (1, 2, 5, 8)
    (3.14, ‘ string ’, -4)
    Все элементы индексируются с нуля. Для получения i-го элемента необходимо указать имя тьюпла затем индекс i в квадратных скобках. Пример:
    t = (0, 1, 2, 3, 4)
    print t, t[-1], t[-3]
    Результат : 0 4 2
    Таким образом, тьюпл можно было назвать вектором-константой, если бы его элементы всегда были однородными.
  3. Список . Хорошим, частным примером списка может служить строка (string) языка Turbo Pascal. Элементами строки являются одиночные символы, ее длина не фиксирована, имеется возможность удалять элементы или, напротив, вставлять их в любом месте строки. Элементами же списка могут быть произвольные объекты не обязательно одного и того же типа. Чтобы создать список, достаточно перечислить его элементы через запятую, заключив все это в квадратные скобки:


  4. [‘string’, (0,1,8), ]
    В отличие от тьюпла, списки можно модифицировать по своему желанию. Доступ к элементам осуществляется также как и в тьюплах. Пример:
    l = ]
    print l, l, l[-2], l[-1]
    Результат : 1 s (2,8) 0
  5. Словарь . Напоминает тип запись (record) в Pascal или структуры (structure) в С. Однако, вместо схемы "поле записи"-"значение" здесь применяется "ключ"-"значение". Словарь представляет собой набор пар "ключ"-"значение". Здесь "ключ" - константа любого типа (но преимущественно применяются строки), он служит для именования (индексирования) некоторого соответствующего ему значения (которое можно менять).

  6. Словарь создается путем перечисления его элементов (пар "ключ"-"значение", разделенных двоеточием), через запятую и заключения всего этого в фигурные скобки. Для получения доступа к некоторому значению необходимо, после имени словаря, в квадратных скобках записать соответствующий ключ. Пример:
    d = {"a": 1, "b": 3, 5: 3.14, "name": "John"}
    d["b"] = d
    print d["a"], d["b"], d, d["name"]
    Результат : 1 3.14 3.14 John
    Для добавления новой пары "ключ"-"значение" достаточно присвоить элементу с новым ключом соответствующее значение:
    d["new"] = "new value"
    print d
    Результат : {"a":1, "b":3, 5:3.14, "name":"John", "new":"new value"}

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

4. Одним из особенностей Python является то, как происходит присваивание одной переменной другой, т.е. когда по обе стороны от оператора "= " стоят переменные.

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

Когда же присваивание приводит к созданию нового объекта (здесь объект - в смысле участка памяти для хранения значения какого-либо типа) и копированию в него содержимого присваиваемой переменной, этот случай назовем семантикой копирования . Таким образом, если при копировании действует семантика копирования, то переменные по обе стороны от знака "=" будут означать два независимых объекта с одинаковым содержанием. И здесь последующее изменение одной переменной никак не скажется на другой.

Присваивание в Python происходит следующим образом: если присваеваемый объект является экземпляром таких типов как числа или строки, то действует семантика копирования, если же в правой части стоит экземпляр класса, список, словарь или тьюпл, то действует семантика указателей. Пример:
a = 2; b = a; b = 3
print " семантика копирования: a=", a, "b=", b
a = ; b = a; b = 3
print " семантика указателей: a=", a, "b=", b
Результат :
семантика копирования: a= 2 b= 3
семантика указателей: a= b=

Для тех из вас, кто хочет знать в чем тут дело, я приведу другой взгляд на присваивание в Python. Если в таких языках как Basic, Pascal, C/C++ мы имели дело с переменными-"емкостями", и хранимыми в них константами (числовыми, символьными, строковыми - не суть важно), а операция присваивания означала "занесение" константы в присваиваемую переменную, то в Python мы уже должны работать с переменными-"именами" и именуемыми ими объектами. (Замечаете некоторую аналогию с языком Prolog?) Что же такое объект в Python? Это все то, чему можно дать имя: числа, строки, списки, словари, экземпляры классов (которые в Object Pascal и называются объектами), сами классы (!), функции, модули и т.д. Так вот, при присваивании переменной некоторого объекта, переменная становится его "именем", причем таких "имен" объект может иметь сколько угодно и все они никак не зависят друг от друга.

Теперь, объекты делятся на модифицируемые (мутируемые) и неизменные. Мутируемые - те, которые могут изменить свое "внутреннее содержание", например, списки, словари, экземпляры классов. А неизменные - такие как числа, тьюплы, строки (да, строки тоже; можно переменной присвоить новую строку, полученную из старой, но саму старую строку модифицировать не получится).

Так вот, если мы пишем a = ; b = a; b = 3 , Python это интерпретирует так:

  • дать объекту "список " имя a ;
  • дать этому объекту еще одно имя - b ;
  • модифицировать нулевой элемент объекта.

  • Вот и получилась "псевдо" семантика указателей.

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

    T = (1, 2, , "string") t = 6 # так нельзя del t # тоже ошибка t = 0 # допустимо, теперь третья компонента - список t = "S" # ошибка: строки не мутируемы

    5. Весьма оригинальным является то, как в Python группируются операторы. В Pascal для этого служат операторные скобки begin-end , в C, C++, Java - фигурные скобки {}, в Basic применяются закрывающие окончания конструкций языка (NEXT, WEND, END IF, END SUB).
    В языке Python все гораздо проще: выделение блока операторов осуществляется путем сдвига выделяемой группы на один или более пробелов или символов табуляции вправо относительно заголовка конструкции к которой и будет относиться данный блок. Например:

    if x > 0: print ‘ x > 0 ’ x = x - 8 else: print ‘ x <= 0 ’ x = 0 Тем самым, хороший стиль записи программ, к которому призывают преподаватели языков Pascal, C++, Java и т.д., здесь приобретается с самого начала, поскольку, по-другому просто не получится.

    Описание языка. Управляющие конструкции



    Обработка исключительных ситуаций


    try:
    <оператор1>
    [ except [<исключение> [, <переменная>] ]:
    <оператор2>]
    [ else <оператор3>]
    Выполняется <оператор1>, если при этом возникла исключительная ситуация <исключение>, то выполняется <оператор2>. Если <исключение> имеет значение, то оно присваивается <переменной>.
    В случае успешного завершения <оператора1>, выполняется <оператор3>.
    try:
    <оператор1>
    finally:
    <оператор2>
    Выполняется <оператор1>. Если не возникло исключений, то выполняется <оператор2>. Иначе выполняется <оператор2> и немедленно инициируется исключительная ситуация.
    raise <исключение> [<значение>] Инициирует исключительную ситуацию <исключение> с параметром <значение>.

    Исключения - это просто строки (string). Пример:

    My_ex = ‘bad index’ try: if bad: raise my_ex, bad except my_ex, value: print ‘ Error ’, value

    Объявление функций



    Объявление классов



    Class cMyClass: def __init__(self, val): self.value = val # def printVal (self): print ‘ value = ’, self.value # # end cMyClass obj = cMyClass (3.14) obj.printVal () obj.value = " string now " obj.printVal () Результат:
    value = 3.14
    value = string now

    Операторы для всех типов последовательностей (списки, тьюплы, строки)


    Операторы для списков (list)


    s[i] = x i-тый элемент s заменяется на x.
    s = t часть элементов s от i до j-1 заменяется на t (t может быть также списком).
    del s удаляет часть s (также как и s = ).
    s.append (x) добавляет элемент x к концу s.
    s.count (x) возвращает количество элементов s равных x.
    s.index (x) возвращает наименьший i, такой, что s[i]==x.
    s.insert (i,j) часть s, начиная с i-го элемента, сдвигается вправо, и s[i] присваивается x.
    s.remove (x) то же, что и del s[ s.index(x) ] - удаляет первый элемент s, равный x.
    s.reverse () записывает строку в обратном порядке
    s.sort () сортирует список по возрастанию.

    Операторы для словарей (dictionary)


    Файловые объекты


    Создаются встроенной функцией open() (ее описание смотрите ниже). Например: f = open (‘mydan.dat’,‘r’) .
    Методы:

    Другие элементы языка и встроенные функции


    = присваивание.
    print [ < c1 > [, < c2 >]* [, ] ] выводит значения < c1 >, < c2 > в стандартный вывод. Ставит пробел между аргументами. Если запятая в конце перечня аргументов отсутствует, то осуществляет переход на новую строку.
    abs (x) возвращает абсолютное значение x.
    apply (f, <аргументы>) вызывает функцию (или метод) f с < аргументами >.
    chr (i) возвращает односимвольную строку с ASCII кодом i.
    cmp (x, y) возвращает отрицательное, ноль, или положительное значение, если, соответственно, x <, ==, или > чем y.
    divmod (a, b) возвращает тьюпл (a/b, a%b), где a/b - это a div b (целая часть результата деления), a%b - это a mod b (остаток от деления).
    eval (s)
    возвращает объект, заданный в s как строка (string). S может содержать любую структуру языка. S также может быть кодовым объектом, например: x = 1 ; incr_x = eval ("x+1") .
    float (x) возвращает вещественное значение равное числу x.
    hex (x) возвращает строку, содержащую шестнадцатеричное представление числа x.
    input (<строка>) выводит <строку>, считывает и возвращает значение со стандартного ввода.
    int (x) возвращает целое значение числа x.
    len (s) возвращает длину (количество элементов) объекта.
    long (x) возвращает значение типа длинного целого числа x.
    max (s) , min (s) возвращают наибольший и наименьший из элементов последовательности s (т.е. s - строка, список или тьюпл).
    oct (x) возвращает строку, содержащую представление числа x.
    open (<имя файла>, <режим>=‘r’) возвращает файловый объект, открытый для чтения. <режим> = ‘w’ - открытие для записи.
    ord (c) возвращает ASCII код символа (строки длины 1) c.
    pow (x, y) возвращает значение x в степени y.
    range (<начало>, <конец>, <шаг>) возвращает список целых чисел, больших либо равных <начало> и меньших чем <конец>, сгенерированных с заданным <шагом>.
    raw_input ( [ <текст> ] ) выводит <текст> на стандартный вывод и считывает строку (string) со стандартного ввода.
    round (x, n=0) возвращает вещественное x, округленное до n-го разряда после запятой.
    str (<объект>) возвращает строковое представление <объекта>.
    type (<объект>) возвращает тип объекта.
    Например: if type(x) == type(‘’): print ‘ это строка ’
    xrange (<начало>, <конец>, <шаг>) аналогичен range, но лишь имитирует список, не создавая его. Используется в цикле for.

    Cпециальные функции для работы со списками


    filter (<функция>, <список>) возвращает список из тех элементов <спиcка>, для которых <функция> принимает значение "истина".
    map (<функция>, <список>) применяет <функцию> к каждому элементу <списка> и возвращает список результатов.
    reduce (f, <список>,
    [, <начальное значение> ] )
    возвращает значение полученное "редуцированием" <списка> функцией f. Это значит, что имеется некая внутренняя переменная p, которая инициализируется <начальным значением>, затем, для каждого элемента <списка>, вызывается функция f с двумя параметрами: p и элементом <списка>. Возвращаемый f результат присваивается p. После перебора всего <списка> reduce возвращает p.
    С помощью данной функции можно, к примеру, вычислить сумму элементов списка: def func (red, el): return red+el sum = reduce (func, , 0) # теперь sum == 15
    lambda [<список параметров>] : <выражение> "анонимная" функция, не имеющая своего имени и записываемая в месте своего вызова. Принимает параметры, заданные в <списке параметров>, и возвращает значение <выражения>. Используется для filter, reduce, map. Например: >>>print filter (lambda x: x>3, ) >>>print map (lambda x: x*2, ) >>>p=reduce (lambda r, x: r*x, , 1) >>>print p 24

    Импортирование модулей



    Стандартный модуль math


    Переменные: pi , e .
    Функции (аналогичны функциям языка C):

    acos(x) cosh(x) ldexp(x,y) sqrt(x)
    asin(x) exp(x) log(x) tan(x)
    atan(x) fabs(x) sinh(x) frexp(x)
    atan2(x,y) floor(x) pow(x,y) modf(x)
    ceil(x) fmod(x,y) sin(x)
    cos(x) log10(x) tanh(x)

    Модуль string


    Функции:

    Заключение


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

    Литература


    1. Бадд Т. Объектно-ориентированное программирование. - СПб.: Питер, 1997.
    2. Guido van Rossum . Python Tutorial. (www.python.org)
    3. Chris Hoffman . A Python Quick Reference. (www.python.org)
    4. Guido van Rossum . Python Library Reference. (www.python.org)
    5. Guido van Rossum . Python Reference Manual. (www.python.org)
    6. Гвидо ван Россум . Семинар по программированию на Python. (http://sultan.da.ru)

    Стоит учить язык программирования 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 - один из таковых. Среда программирования впоследствии переведет команды в и цель человека, ради которой создавался алгоритм, будет выполнена. «Питон» имеет свой синтаксис, который будет рассмотрен ниже.

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

    Разработка началась в 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 для начинающих. Глава первая. «О чем это мы»

    На всякий случай, немного скучного «evangelism». Кому он надоел, можно пропустить несколько абзацев.
    Python (читается как «Пайтон» а не «питон») - скриптовый язык, разработанный Гвидо ван Россумом в качестве простого языка, легкого в изучении новичку.
    В наше время Пайтон – широко распространенный язык, который используется во многих областях:
    - Разработка прикладного ПО (например linux-утилиты yum, pirut, system-config-*, IM-клиент Gajim и многие другие)
    - Разработка web-приложений (мощнейший Application-сервер Zope и разработанная на его основе CMS Plone, на основе которой работает например сайт ЦРУ, и масса фреймворков для быстрой разработки приложений Plones, Django, TurboGears и многие другие)
    - Использование в качестве встраиваемого скриптового языка во многих играх, и не только (в офисном пакете OpenOffice.org, 3d редакторе Blender, СУБД Postgre)
    - Использование в научных рассчетах (с пакетами SciPy и numPy для расчетов и PyPlot для рисования графиков Пайтон становится практически сравним с пакетами типа MatLab)

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

    1. Сам интерпретатор, его можно взять тут (http://python.org/download/).
    2. Среда разработки. Она для начала необязательна, да и идущий в дистрибутиве IDLE подойдет новичку, но для серъезных проектов нужно что-то посерьезней.
    Для Windows я использую замечательный легковесный PyScripter (http://tinyurl.com/5jc63t), для Linux – Komodo IDE.

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

    Просто запустите python.exe. Приглашение ввода не заставит себя долго ждать, оно выглядит так:

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

    Тогда интерпретатор будет в конце программы ждать нажатия enter.

    Или ассоциируйте py-файлы в Far с Пайтоном и открывайте нажимая enter.

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

    Немного теории.

    Для начала, Пайтон – язык со строгой динамической типизацией. Что это означает?

    Есть языки со строгой типизацией (pascal, java, c и т.п.), у которых тип переменной определяется заранее и не может быть изменен, и есть языки с динамической типизацией (python, ruby, vb), в которых тип переменной трактуется в зависимости от присвоенного значения.
    Языки с динамической типизацией можно разделить еще на 2 вида. Строгие, которые не допускают неявного преобразования типа (Пайтон) и нестрогие, которые выполняют неявные преобразования типа (например VB, в котором можно легко сложить строку "123" и число 456).
    Разобравшись с классификацией Пайтона, попробуем немного «поиграть» с интерпретатором.

    >>> a = b = 1 >>> a, b (1, 1) >>> b = 2 >>> a, b (1, 2) >>> a, b = b, a >>> a, b (2, 1)

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

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

    Условие задается с помощью оператора if, который заканчивается «:». Альтернативные условия которые будут выполняться если первая проверка «не прошла» задаются оператором elif. Наконец else задает ветку, которая будет выполнена если ни одно из условий не подошло.
    Обратите внимание, что после ввода if интерпретатор с помощью приглашения «...» показывает что он ожидает продолжения ввода. Чтобы сообщить ему что мы закончили, необходимо ввести пустую строку.

    (Пример с ветвлениями почему-то рвет разметку на хабре, не смотря на танцы с тегами pre и code. Простите за неудобство, я его кинул сюда pastebin.com/f66af97ba , если кто-то подскажет что не так - буду очень признателен)

    Циклы.

    Простейшим случаем цикла является цикл while. В качестве параметра он принимает условие и выполняется до тех пор, пока оно истино.
    Вот маленький пример.

    >>> x = 0 >>> while x<=10: ... print x ... x += 1 ... 0 1 2 ........... 10

    Обратите внимание что поскольку и print x и x+=1 написаны с одинаковым отступом, они считаются телом цикла (помните что я говорил про блоки? ;-)).

    Второй вид циклов в Пайтон – цикл for. Он аналогичен циклу foreach других языков. Его синтаксис условно таков.

    For переменная in список:
    команды

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

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

    >>> x = "Hello, Python!" >>> for char in x: ... print char ... H e l ........... !

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

    На входе она принимает от одного до трех параметров, на выходе возвращает список чисел, по которому мы можем «пройтись» оператором for.

    Вот несколько примеров использования функции range, которые объясняют роль ее параметров.

    >>> range(10) >>> range(2, 12) >>> range(2, 12, 3) >>> range(12, 2, -2)

    И маленький пример с циклом.

    >>> for x in range(10): ... print x ... 0 1 2 ..... 9

    Ввод-вывод

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

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

    Для ввода с консоли используется функция raw_input(приглашение), которая выводит на экран приглашение и ожидает ввода пользователя, возвращая то что ввел пользователь в виде своего значения.

    X = int(raw_input ("Введи число:")) print "Квадрат этого числа составляет ", x * x

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

    Вот и все для первого урока.

    Домашнее задание.

    1. Составить программу расчета гипотенузы прямоугольного треугольника. Длина катетов запрашивается у пользователя.
    2. Составить программу нахождения корней квадратного уравнения в общем виде. Коэффициенты запрашиваются у пользователя.
    3. Составить программу вывода таблицы умножения на число M. Таблица составляется от M * a, до M * b, где M, a, b запрашиваются у пользователя. Вывод должен осуществляется в столбик, по одному примеру на строку в следующем виде (например):
    5 х 4 = 20
    5 х 5 = 25
    И так далее.

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

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

    Привет, привет! На связи Гридин Семён. Наконец — то, я добрался до основной тематики этого блога, программирование интеллектуальных систем с помощью языка Python. Я долго шёл к этому, готовился. И вот, я готов писать вам интересные статьи и изучать глубоко эту тему.

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

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

    Тогда начну свою повесть))...

    Возможности языка программирования Python

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

    Чем же может быть полезен Python?

    1. Работа с xml/html файлами
    2. Работа с http запросами
    3. GUI (графический интерфейс)
    4. Создание веб-сценариев
    5. Работа с FTP
    6. Работа с изображениями, аудио и видео файлами
    7. Робототехника (применение одноплатных компьютеров)
    8. Программирование математических и научных вычислений

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

    На Питоне можно собрать и резервное копирование, и работу с электронными письмами, и простейший калькулятор, и скрипт для сайта. Язык ничем не ограничен. Что самое интересное, используется в таких IT-гигантах, как Google и Yandex.

    В этой статье мы рассмотрим с вами программирование Python с нуля.

    Для того чтобы у вас работала программа на определённом устройстве, неважно какая ОС — windows, linux, RaspbianOS, MacOS. Важно, чтобы у вас находился интерпретатор, который будет понимать команды и выполнять.

    Делаем следующим образом, скачиваем IDE python c официального источника .

    Знакомство с интерпретатором

    Итак интерпретатор обрабатывает текстовый код программы. Существует интерактивный режим среды разработки. Можно запустить несколькими способами:

    1. Из обычной командной строки сmd — введите команду python ;
    2. C рабочего стола (ярлык);
    3. С помощью меню Пуск — Python IDLE;

    Вам откроется это окошечко:

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

    Для Arduino тоже есть своя программная оболочка . Почитайте.

    С чего начать обучение python? Давайте попробуем написать первую программу?

    Создание первой программы

    Программа на языке Python — это обычный текстовый файл с написанным кодом. Расширение этого файла.py. Запустить программу можно, указав соответствующее имя в командной строке. Напишем с вами простейшую стандартную программу «Hello world!».

    Задача такая — вывести на экран "Hello world!". Запускаем NotePad.

    Пишем следующий код:

    Python

    print ("Hello world!!!")

    print ("Hello world!!!" )

    И сохраняем в папку соблюдая путь C:\MyScripts . Рекомендую все проекты скидывать в эту папку.

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

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

    Лучшая книга по python для начинающих по праву считается самоучитель Майка МакГрата. Исчерпывающее руководство по составлению кода на языке Питон.

    Извините за качество фото, по другому не получается. Остальные книги пока не рекомендую покупать, так как они на самом деле громоздкие и объёмные. Для базиса достаточно будет и МакГрата.

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

    С уважением, Гридин Семён