Скачать бесплатно книги - программирование.

Скачать бесплатно книги - программирование.


загрузка...






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

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

Книги, статьи, руководства и примеры

Автор: Дегтярев Михаил.

Язык программирования Python (Питон).

Язык программирования Python является интерпретируемым , интерактивным языком программирования созданный Гвидо ван Россум . Он названа в честь телесериала "Летающий цирк Монти Пайтон ". Python был создан Гвидо ван Россум , потому Amoeba ОС был необходим хороший скриптовый язык, который был способен реализовать систему принятия звонков. Python часто сравнивают с Tcl , Perl , Scheme или Java и совсем недавно с Ruby . Программирование для начинающих.

Философия
Python является многопрофильным парадигмовым языком, как Perl и в отличие от Smalltalk или Haskell . Это означает, что вместо того, чтобы вынуждать кодера принять один особый стиль кодирования, он позволяет выбрать из нескольких. Объектная ориентация , структурное программирование , функциональное программирование , а в последнее время, дизайн по контракту - это все поддерживается. Python является динамично типизируемым и использует сборку мусора для управления памятью. Программирование для чайников.
Python также называют живой язык программирования. В основном, люди по обе стороны от обсуждения думают, что других языков программирования не соответствует этому критерию.
Также цель, чтобы сделать использование Python веселым (и, следовательно, отчасти, вывод названия "Python").
Несмотря на эти популистские цели, и, хотя опять-таки, как с Perl - Python иногда классифицируется как " язык сценариев ", хотя он была использована для разработки многих крупных программных проектов, таких как Zope сервера приложений и совместного использования файлов Mnet системы. Он также широко используется в Google . Хотя Python создает сценарии, сторонники предпочитают его называть интерпретируемым языком (язык сценариев предполагает что-то вроде JavaScript , гораздо проще и, в большинстве случаев, менее способных, чем Python) и подходит для обучения основам программирования.
Хотя создатель Python несколько враждебен к функциональному программированию и Lisp традициям, но существует много значительных параллелей между философией Python и минималистской семьей языков Lisp, такие как Scheme . Многие программисты в прошлом использовавшие Lisp нашли Python привлекательным по этой причине.

Типы данных и структуры
Python имеет широкий спектр основных типов данных. Наряду с обычными целыми и с плавающей точкой, оно прозрачно поддерживает сколь угодно большие числа и комплексные числа .
Он поддерживает обычный арсенал операций со строками, с одним исключением: строки в Python являются неизменными объектами , так что любые операции со строками, которые могут изменить строки (такие, как замена символов) будут новую строку.
Python оперирует значениями, а не переменными, приведение типа означает, что Python является динамически типизированным язык, как Lisp и в отличие от Java или C . Все значения передаются по ссылке.
Среди динамически типизированных языков, Python является языком проверки умеренного типа . Это не такой как свободные Perl, не такой строгий, как Caml . Неявное преобразование определено для числовых типов, так что может на законных основаниях умножить комплексное число, по длинное целое (например) без явного приведения. Однако, нет неявного преобразования между (например) числами и строками, в отличие от Perl, число не может участвовать в строковых операциях.

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

Объектная система
Система Python типа хорошо интегрирована с системой классов. Хотя встроенные типы данных точно не классы, класс может наследовать от этого типа. Таким образом, можно наследовать строки или словари ... или даже целые чисел, вы должны самостоятельно разбираться в нюансах, чтобы делать такие вещи. Питон поддерживает множественное наследование.
Язык поддерживает обширный самоанализ типов и классов. Типы можно прочитать и сравнить между собой типы, как и в Smalltalk . Атрибуты объекта могут быть извлечены как словарь.
Операторы могут быть перегружены в Python путем определения специальных функций-членов, например, определив -add- на класс позволяет использовать + оператор как член этого класса. (Сравнимо с C++ operator+ и аналогичные названия метода.)

Синтаксис
Python был разработан, чтобы быть легко читаемым. Он имеет простой визуальный макет, использует слова английского язык часто там, где другие языки используют знаки препинания, и заметно меньше синтаксических конструкций, чем многие из структурированных языков, таких как C, Perl, или Pascal.
Например, Питон имеет только два цикла структурированных форм- for , взамен циклов элементов списка или итератора (например, Perl foreach ), и while цикл ( тех пор, пока логическое выражение истинно). Таким образом, не хватает в стиле С комплекс for , do ... while , и в Perl until , хотя, конечно, эквиваленты могут быть выражены. Кроме того, он имеет только if ... elif ... else для ветвящихся нет switch или меток goto .

Синтаксические значения пробелами
Одним из необычных аспектов синтаксиса Python является метод, используемый для разграничения программных блокоы. Иногда называется " пробельный синтаксис", он является одним из аспектов синтаксиса Python, так что многие программисты, которые никогда не писали на Python, слышали, так как этот стиль является уникальным среди распространенных настоящее время языков.
В языках, которые используют блочную структуру в конечном счете производные от Алгола -языках, включая Pascal , C, Perl и блоков кода засчитываются в фигурные скобки или ключевые слова. (C и Perl использовать { } ; Паскаль использует begin и end .) Во всех этих языках, однако, программисты обычно отступают код внутри блока, для того чтобы отделить визуально от окружающих кода.
Python, вместо того, занимает позицию из менее известных языков Оккама , вместо знаков препинания или ключевые слова, он использует этот отступ себя, чтобы указать запуск блока. Краткий пример пояснит это. Здесь C и Python функции, которые делают то же самое - вычислителяют факториал целого числа:
Факториал функции в C:

int factorial(int x) {      
    if (x == 0) {                      
        return(1);                   
    } else {
        return(x * factorial(x-1));
    }
}

Факториал функция в Python:

 
def factorial(x):
    if x == 0:
        return 1
    else:
        return x * factorial(x-1)

Некоторые программисты использовавшие Алгола-стиль, в котором пробелы семантически пустые, сначала думали что это путаница. Лишь немногие из них lf.n нелестные сравнения с колонко-ориентированным стилем, который используется на перфорированной-карте Fortran системы: из чего можно сделать вывод, что однажды определив незначимость пробела, во многих поколениях было заложено отношение значимости символов но не их расположения..
Для Python программистов, однако, "пробельный стиль" просто экстраполяция конвенции, которой программисты в Алгол-стиле уже следовали в любом случае.

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

numbers = [1, 2, 3, 4, 5]
powers_of_two = [ 2 ** n for n in numbers ]

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

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

  def add_and_print_maker(x):
    def temp(y):
        print "%d + %d = %d" % (x, y, x+y)
    return temp

Функция также может быть реализована с вложенными lambda, как это сделано в Scheme . Для этого потребуется изменить lambda ограничения , определив функцию для инкапсуляции print:

 def print_func(obj):
   print obj


add_and_print_maker = \\
   lambda(x): lambda(y): \\
      print_func("%d + %d = %d" % (x, y, x+y))

В результате add_and_print_maker функции выполняются одинаково - с учетом числа х они возвращают функции, которые при данном числе у выведет предложение арифметики. Хотя первый стиль может быть более общим, второй может быть более ясным для программистов с опытом работы функционального программирования.
Уникальный стиль Python для булевых операторов and и or , позволяют создать другие уникальные функциональные возможности. Использование этих двух операторов, любой тип управления потоком могут быть реализованы в рамках лямбда-выражений . Хотя обычно используются для более простых целей.

Генераторы
Представленный в Python 2.2, как дополнительная функция и завершена в версии 2.3, генераторы в механизм Python для ленивых вычислений функции, которые в противном случае возвращения длинным или с интенсивными вычислениями списка. Использование генераторов похожие на использование потоков в Scheme.
Один пример:

  def generate_ints(N):
   for i in range(N):
       yield i

Теперь вы можете использовать генератор generate_ints:

for i in generate_ints(N):
   print i

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

Объектно-ориентированное программирование
Python имеет наследования , включая множественное наследование . Он предлагает ограниченную поддержку для private переменных, используя замену имен. Хотя многие пользователи Python не чувствуют потребность в private переменных. Лозунг "Мы все здесь по обоюдному согласию" используется для описания этого отношения.
ООП доктрины, такие как использование методов доступа для чтения данных членов не применяются в Python. Так же, как Python предлагает функционально-программных конструкций, но не пытается требовать ссылочную прозрачность (в отличие Haskell ), он предлагает (и широко используется!) свой объект системы, но не требует ООП поведение (в отличие от Java или Smalltalk ).
В версии 2.2 Python, были введены классы "нового стиля". С этого момента, объекты и виды были объединены, что позволяет создавать подклассов типов. Даже совершенно новые типы могут быть определены, в комплекте с пользовательским поведением для инфиксных операторов. Это позволяет делать многие радикальные вещи, чтобы сделать синтаксически в Python, такое как возможность использовать C++-стиль ввода и вывода. Ноое множественное наследование в модели было принято с нового стиля классов, что делает гораздо более логическом порядок наследования, принятой от Common Lisp . Новые методы и классы property, -getattribute- и -setattribute- были также определены для оказания помощи в обработке переменных.

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

Стандартные библиотеки
Python имеет большую стандартную библиотеку, которая делает его хорошо подходящим для многих задач. Это происходит из так называемого "включенной батареи" Философия для Python модулей. Модули стандартной библиотеки могут быть расширены с помощью пользовательских модулей, написанных на С или Python. Стандартная библиотека особенно хороша с учетом создания Интернет-приложения, с большим количеством поддерживаемых стандартных форматов и протоколов (такие, как MIME и HTTP ). Сюда также включены модули для создания графических пользовательских интерфейсов, подключение к реляционным базам данных и манипулирование регулярными выраженими.
Стандартная библиотека является одной из самых сильных сторон Python. Большая его часть является кросс-платформенной, это означает, что Python программы часто работают на Unix, Windows, Macintosh и других платформ без изменений.

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

Неологизмы
Несколько неологизмов пришло в обиход в сообществе Python. Одним из наиболее распространенных является "вещий", которые могут иметь широкий диапазон значений, связанных со стилем программирования. Сказать, что кусок кода питона должен сказать, что он использует Python идиомы хорошо, что это естественно или показывает свободное владение языком. Кроме того, чтобы говорить о функции интерфейса и языка, что это вещий должен сказать, что она хорошо работает с идиомы Python, что его использование хорошо сочетается с остальной частью языка.
В отличие вышеприведенного, знак unpythonic кода означает то, что пытаются "написать C++ (или Lisp, или Perl) код в Python" - то есть, обеспечивают грубую транскрипцию, а не идиоматический перевод формы из другого языка.
Префикс Ру-может быть использован, чтобы показать, что что-то связано с Python, так же как префикс J-обозначает Java. Примеры использования этого префикса в названиях приложений Python или библиотеки включают PyGame, связывание SDL на Python, PyUI, GUI закодированные полностью на Python, и PyAlaMode, IDE для Python созданные Orbtech, компания, специализирующаяся на Python.





Если возник вопрос, то вы можете получить ответ: форум программистов