Справочник по языку Python 1 Исходный текст




Скачать 470.76 Kb.
НазваниеСправочник по языку Python 1 Исходный текст
страница9/17
Дата публикации17.03.2013
Размер470.76 Kb.
ТипСправочник
odtdocs.ru > Право > Справочник
1   ...   5   6   7   8   9   10   11   12   ...   17

Возможности

^

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


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

Так выглядит общение с Питоном в интерактивном режиме:

>>> 2 ** 100 # возведение 2 в степень 100 1267650600228229401496703205376L >>> from math import * # импорт математических функций >>> sin(pi * 0.5) # вычисление синуса от половины пи 1.0 >>> help(sorted) # помощь по функции sorted Help on built-in function sorted in module __builtin__: sorted(...) sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

В интерактивном режиме доступен отладчик pdb и система помощи (вызывается по help()). Система помощи работает для модулей, классов и функций, только если те были снабжены строками документации.

Кроме встроенной, существует и улучшенная интерактивная оболочка IPython.[16]
^

Объектно-ориентированное программирование

Основная статья: Объектно-ориентированное программирование на Питоне

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

Возможности и особенности:

  1. Классы являются одновременно объектами со всеми ниже приведёнными возможностями

  2. Наследование, в том числе множественное.

  3. Полиморфизм (все функции виртуальные).

  4. Инкапсуляция (два уровня — общедоступные и скрытые методы и поля). Особенность — скрытые члены доступны для использования и помечены как скрытые лишь особыми именами

  5. Специальные методы, управляющие жизненным циклом объекта: конструкторы, деструкторы, распределители памяти.

  6. Перегрузка операторов (всех, кроме is, '.', '=' и символьных логических).

  7. Свойства (имитация поля с помощью функций).

  8. Управление доступа к полям (эмуляция полей и методов, частичный доступ, и т. п.).

  9. Методы для управления наиболее распространёнными операциями (истинностное значение, len(), глубокое копирование, сериализация, итерация по объекту, …)

  10. Метапрограммирование (управление созданием классов, триггеры на создание классов, и др.)

  11. Полная интроспекция.

  12. Классовые и статические методы, классовые поля.

  13. Классы, вложенные в функции и классы.
^

Функциональное программирование

Основная статья: Функциональное программирование на Питоне

Python поддерживает парадигму функционального программирования, в частности:

  • функция является объектом

  • функции высших порядков

  • рекурсия

  • развитая обработка списков (списковые выражения, операции над последовательностями, итераторы)

  • аналог замыканий

  • частичное применение функции

  • возможность реализации других средств на самом языке (например, карринг)
^

Модули и пакеты


Программное обеспечение (приложение или библиотека) на Питоне оформляется в виде модулей, которые в свою очередь могут быть собраны в пакеты. Модули могут располагаться как в папках так и в ZIP архивах. Модули могут быть двух типов по своему происхождению: модули, написанные на «чистом» Питоне, и модули расширения (extension modules), написанные на других языках программирования. Например, в стандартной библиотеке есть «чистый» модуль pickle и его аналог на Си: cPickle. Модуль оформляется в виде отдельного файла, а пакет — в виде отдельного каталога. Подключение модуля к программе осуществляется оператором import. После импорта модуль представлен отдельным объектом, дающим доступ к пространству имён модуля. В ходе выполнения программы модуль можно перезагрузить функцией reload().

Интроспекция

^ Основная статья: Интроспекция в Питоне

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

Применение интроспекции является важной частью того, что называют pythonic style, и широко применяется в библиотеках и фреймворках Python, таких как PyRO, PLY, Cherry, Django и др., значительно экономя время использующего их программиста.
^

Обработка исключений


Обработка исключений поддерживается в Python посредством операторов try, except, else, finally, raise, образующих блок обработки исключения. В общем случае блок выглядит следующим образом:

try: #здесь код, который может вызвать исключение raise ExceptionType("message") except (Тип исключения1, Тип исключения2, …), Переменная: #Код в блоке выполняется, если тип исключения совпадает с одним из типов #(Тип исключения1, Тип исключения2, …) или является наследником одного #из этих типов. #Полученное исключение доступно в необязательной Переменной. except (Тип исключения3, Тип исключения4, …), Переменная: #количество блоков except не ограниченно raise #Сгенерировать исключение "поверх" полученного; без параметров - повторно сгенерировать полученное except: #Будет выполнено при любом исключении, не обработанном типизированными блоками except else: #Код блока выполняется, если не было поймано исключений. finally: #будет исполнено в любом случае, возможно после соответствующего #блока except или else

Совместное использование else, except и finally стало возможно только начиная в Python 2.5. Информация о текущем исключении всегда доступна через sys.exc_info(). Кроме значения исключения Python также сохраняет состояние стека вплоть до точки возбуждения исключения — так называемый traceback.

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

Иногда вместо явной обработки исключений удобнее использовать блок with (доступен, начиная с Python 2.5).

Итераторы


В программах на Питоне широко используются итераторы. Цикл for может работать как с последовательностью, так и с итератором. Все коллекции, как правило, предоставляют итератор. Объекты определённого пользователем класса тоже могут быть итераторами. Подробнее об итераторах можно узнать в разделе о функциональном программировании. Модуль itertools стандартной библиотеки содержит много полезных функций для работы с итераторами.

Генераторы


Одной из интересных возможностей языка являются генераторы — функции, сохраняющие внутреннее состояние: значения локальных переменных и текущую инструкцию (см. также: сопрограммы). Генераторы могут использоваться как итераторы для структур данных и для ленивых вычислений. См. пример: генератор чисел Фибоначчи.

При вызове генератора функция немедленно возвращает объект-итератор, который хранит текущую точку исполнения и состояние локальных переменных функции. При запросе следующего значения (посредством метода next(), неявно вызываемого в for цикле) генератор продолжает исполнение функции от предыдущей точки останова до следующего оператора yield или return.

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

>>> sum(i for i in xrange(1, 100) if i % 2 != 0) 2500

В этом примере суммируются все нечётные числа от 1 до 99.

Начиная с версии 2.5, Python поддерживает полноценные сопроцедуры: теперь в генератор можно передавать значения с помощью метода send() и возбуждать в его контексте исключения с помощью метода throw().
^

Управление контекстом выполнения


В Python 2.5 появились средства для управления контекстом выполнения блока кода — оператор with и модуль contextlib. См.: пример.

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

Декораторы


Начиная с версии 2.4, Python позволяет использовать т. н. декораторы[17] (не следует путать с одноимённым шаблоном проектирования) для поддержки существующей практики преобразования функций и методов в месте определения (декораторов может быть несколько). После долгих дебатов для декораторов стал использоваться символ @ в строках, предшествующих определению функции или метода. Следующий пример содержит описание статического метода без применения декоратора:

def myWonderfulMethod(): return "Некоторый метод" myWonderfulMethod = staticmethod(myWonderfulMethod)

и с помощью декоратора:

@staticmethod def myWonderfulMethod(): return "Некоторый метод"

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

С версии 2.6 декораторы можно использовать с классами, аналогично функциям.
^

Другие возможности


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

Например, класс является объектом, а в операторе определения класса можно использовать выражения в списке родительских классов.

def getClass(): return dict class D(getClass()): pass d = D()

Можно модифицировать многие объекты во время исполнения, например классы:

>>> class X(object): pass … >>> y = X() >>> y.wrongMethod() # такого метода пока нет Traceback (most recent call last): File "", line 1, in AttributeError: 'X' object has no attribute 'wrongMethod' >>> X.wrongMethod = lambda self : 'im here' # добавим его >>> y.wrongMethod() # так как доступ к методу приводит к поиску по __dict__ класса, 'im here' # то wrongMethod становится доступным всем экземплярам
1   ...   5   6   7   8   9   10   11   12   ...   17

Похожие:

Инструкция по выполнению работы На выполнение экзаменационной работы...
Включает 1 задание (С1) и представляет собой небольшую письменную работу по прослушанному тексту (сжатое изложение). Исходный текст...

Машинный перевод
С постредактированием: исходный текст перерабатывается машиной, а человек-редактор исправляет результат

Введение в Python и Eric
Замечательной особенностью Python является возможность быстрого создания простых изображений. Самым лёгким для освоения способом...

Справочник организаций, справочник банков и справочник назначений платежа. Эти
Вы сможете заполнить реквизиты плательщика. Если в старом справочнике организаций

Исходный текст
Но как быть с теми, кто не видит, не слышит, не чувствует, когда больно и плохо другому? (3)Постороннему, какими они считают всех,...

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

Создание справочника адресов (кладр)
При этом, если справочник отделов и справочник должностей ранее не заполнялись, возможно заполнение этих справочников

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

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

Урок по русскому языку в 7 классе (урок развития речи)
Оборудование: интерактивная доска, текст Б. Полевого «Спасение детей», оформленная доска

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница