Программирование на языке Python
Программирование на языке Python — это процесс создания программ с помощью этого высокоуровневого языка программирования общего назначения. Создан Гвидо ван Россумом в 1991 году.
Особенности языка:
Читаемость кода — синтаксис с отступами вместо фигурных скобок делает код визуально понятным.
Динамическая типизация — не нужно объявлять тип переменной — язык определяет его автоматически.
Мультипарадигменность — поддерживает ООП, функциональное и процедурное программирование.
Интерпретируемость — код выполняется построчно, что позволяет запускать его на любой ОС без перекомпиляции.
Некоторые концепции программирования на Python:
Переменные — контейнеры для хранения данных. В Python не нужно объявлять тип переменной — он определяется автоматически.
Ввод данных от пользователя — функция input() позволяет получать данные от пользователя.
Математические операции — Python поддерживает все стандартные математические операции.
Условный оператор — для выполнения разных блоков кода в зависимости от условий используются операторы if, elif и else.
Циклы — для повторения блоков кода используются циклы for и while.
Структуры данных — Python поддерживает списки, кортежи, словари, множества и другие структуры.
-
Введение в язык Питон
Мы видели, что объекты имеют атрибуты, а функция dir() возвращает список этих атрибутов. Иногда, однако, мы просто хотим определить наличие одного или более атрибутов. И если у объекта есть интересующий нас атрибут, мы часто хотим извлечь этот атрибут. Эти задачи решаются с помощью функций hasattr() и getattr(), как показано в следующем примере
-
Питон - статьи
Декларативный стиль программирования почти всегда более прямой способ задания ограничений, чем императивный или процедурный. Разумеется, не все проблемы программирования связаны с ограничениями - или, по крайней мере, не всегда естественно формулируются в таких терминах
Воплощение (instantiation) или наследование (inheritance)
Листинг 1. Типичная иерархия наследования
Листинг 2. Тестирование родословной
Метаклассы или предки
Листинг 3. Наследование атрибутов
Листинг 4. Атрибуты в экземплярах
Листинг 5. Атрибуты и метаклассы
Листинг 6. Комбинирование базового класса и метакласса
Листинг 7. Разрешение метаклассов и базовых классов
Листинг 8. Задание атрибута в метаклассе
Еще о магии классов
Листинг 9. Настройка вывода класса на печатающее устройство
Методы класса в сравнении с метаметодами
Листинг 10. Метаметоды и методы класса
Листинг 11. Вызов метаметода
Листинг 12. Магический метод метакласса
Листинг 13. Немагический метод метакласса
Конфликты метаклассов
Листинг 14. Конфликты метаклассов
Листинг 15. Разрешение конфликта метаклассов вручную
Заключение
Ресурсы
Питон - статьи
Создание декларативных мини-языков
Программирование как утверждение, а не как инструкция
Листинг 1. Пример системы линейных уравнений
Листинг 2. Пример на языке Prolog - family.pro
Листинг 3. Пример для EBNF
Листинг 4. Объявление типа XML-документа
Python как интерпретатор в сравнении с Python как средой
Магия интроспекции
Листинг 5. Пример PLY
Листинг 6. Использование пространства имен импортированного модуля
Листинг 7. basic_lex.py
Листинг 8. magic_lex.py
Листинг 9. polymorphic_lex
Магия наследования
Листинг 10. Объявления правил gnosis.xml.validity
Листинг 11. Класс gnosis.xml.validity.Seq
Когда объявлять
Ресурсы
Питон - статьи
Множественная диспетчеризация
Обобщение полиморфизма с помощью мультиметодов
Что такое полиморфизм?
Листинг 1. Процедурный выбор ветвей кода по типу объекта
Листинг 2. Реализация метода .meth() с помощью Foo и Bar
Полная реализация полиморфизма
Листинг 3. Множественная диспетчеризация Foo и Bar
Листинг 4. Явный вызов и вызов функции при диспетчеризации
Улучшение наследования
Листинг 5. Наследование для расширения возможностей
Листинг 6. Мультиметоды для расширения возможностей
Передача диспетчеризации
Листинг 7. Автоматическое воспроизведение диспетчеризации
Листинг 8. Программирование с ручной передачей
Замечания выполнении в многонитевой среде
Листинг 9. Клонирование для безопасности нити
Ресурсы
Питон - статьи
WSGI, введение
Теория
Практика
Заключение
-
В глубь языка Python
Эта книга не предназначена для новичков. Подразумевается, что:
Вы уже знакомы хотябы с одним объектно-ориентированным языком, таким как Java, C++, или Delphi.
Вы знаете хотя бы один скриптовой язык, например, Perl, Visual Basic, или JavaScript.
Вы уже установили Python версии 2.0 или выше (рекомендуется Python 2.2)
Если вы только начали изучать программирование, это не значит, что вы не можете изучать Python. Python — один из самых простых языков для обучения, но для начинающих предназначены совсем другие книги.
Объединяем все вместе
Особенности операторов and и or
Глава 2. Сила самоанализа
В глубь
Фильтрование списков
Получение атрибутов с помощью getattr
Использование lambda-функций
Необязательные и именованные аргументы
Заключение
Приложение A. GNU Free Documentation License
A.0. Preamble
В глубь языка Python
Словари
Глава 1. Знакомство с языком Python
В глубь
Документирование функций
Объявление функций
Отступы
Объединение и разбиение строк
Списки
Обработка списков
Присваивание сразу нескольких значений
Все является объектами
Форматированное представление
Тестирование модулей
Кортежи
Определение переменных
-
Справочник по Python
В действительности есть несколько модулей Python, предоставляющих доступ к базам данных MySQL и mSQL. В большинстве аспектов они очень схожи между собой. В этой главе приводятся спецификации API для двух наиболее часто используемых модулей. Однако важно указать на приближающуюся унификацию разных API для баз данных в едином API, специфицированном Python Database SIG. В настоящее время mSQL не поддерживает этот API.
-
Язык программирования Python
Python - интерпретируемый, объектно-ориентированный высокоуровневый язык программирования с динамической семантикой. Встроенные высокоуровневые структуры данных в сочетании с динамическими типизацией и связыванием делают язык привлекательным для быстрой разработки приложений (RAD, Rapid Application Development). Кроме того, его можно использовать в качестве сценарного языка для связи программных компонентов. Синтаксис Python прост в изучении, в нем придается особое значение читаемости кода, а это сокращает затраты на сопровождение программных продуктов. Python поддерживает модули и пакеты, поощряя модульность и повторное использование кода. Интерпретатор Python и большая стандартная библиотека доступны бесплатно в виде исходных и исполняемых кодов для всех основных платформ и могут свободно распространяться.
Как описать язык?
История языка Python
Программа на Python
Основные алгоритмические конструкции
Последовательность операторов
Оператор условия и выбора
Циклы
Функции
Исключения
Встроенные типы данных
Тип int и long
Тип float
Тип complex
Тип bool
Тип string и тип unicode
Тип tuple
Тип list
Последовательности
Некоторые методы для работы с последовательностями
Взятие элемента по индексу и срезы
Тип dict
Тип file
Выражения
Имена
Стиль программирования
Заключение
Язык программирования Python
Понятие модуля
Модули в Python
Встроенные функции
Функции преобразования типов и классы
Числовые и строковые функции
Функции обработки данных
Функции определения свойств
Функции для доступа к внутренним структурам
Функции компиляции и исполнения
Функции ввода-вывода
Функции для работы с атрибутами
Функции-"украшатели" методов классов
Обзор стандартной библиотеки
Модуль sys
Модуль copy
Модули math и cmath
Модуль random
Модуль time
Модуль sets
Модули array и struct
Модуль itertools
Модуль locale
Модуль gettext
Поддержка цикла разработки
Модуль pdb
Модуль profile
Модуль unittest
Модуль pydoc
Пакет docutils
Пакет distutils
Взаимодействие с операционной системой
Модуль os
Модуль stat
Модуль tempfile
Обработка текстов
Многопоточные вычисления
Хранение данных. Архивация
Модуль pickle
Модуль shelve
Модули anydbm и gdbm
Модуль csv
Платформо-зависимые модули
Поддержка сети. Протоколы Интернет
Поддержка Internet. Форматы данных
Python о себе
Графический интерфейс
Заключение
Язык программирования Python
Что такое функциональное программирование?
Функциональная программа
Функция: определение и вызов
Рекурсия
Функции как параметры и результат
Функция apply()
Обработка последовательностей
Функции range() и xrange()
Функция map()
Функция filter()
Списковые включения
Функция sum()
Функция reduce()
Функция zip()
Итераторы
Функция iter()
Функция enumerate()
Функция sorted()
Функция itertools.chain()
Функция itertools.repeat()
Функция itertools.count()
Функция itertools.cycle()
Функции itertools.imap(), itertools.starmap() и itertools.ifilter()
Функции itertools.takewhile() и itertools.dropwhile()
Функция itertools.izip()
Функция itertools.groupby()
Функция itertools.tee()
Собственный итератор
Простые генераторы
Генераторное выражение
Карринг
Заключение
Ссылки по теме
Язык программирования Python
Основные понятия
Метаклассы
Мультиметоды
Устойчивые объекты
Критика ООП
Заключение
Ссылки
Абстракция и декомпозиция
Объекты
Типы и классы
Определение класса
Инкапсуляция
Доступ к свойствам
Сокрытие данных
Полиморфизм
Имитация типов
Наследование
Множественное наследование
Порядок разрешения методов
Контейнеры
Ассоциация
Слабые ссылки
Статический метод
Метод класса
Абстракция и декомпозиция
Язык программирования Python
Модуль Numeric
Создание массива
Методы массивов
Срезы
Универсальные функции
Функции модуля Numeric
Функции для работы с массивами
Функция Numeric.take()
Функции Numeric.diagonal() и Numeric.trace()
Функция Numeric.choose()
Свод функций модуля Numeric
Модуль LinearAlgebra
Модуль RandomArray
Заключение
Язык программирования Python
Строки
Кодировка Python-программы
Строковые литералы
Операции над строками
Операция форматирования
Индексы и срезы
Модуль string
Методы строк
Рекомендации по эффективности
Модуль StringIO
Модуль difflib
Регулярные выражения
Синтаксис регулярного выражения
Методы объекта-шаблона
Примеры шаблонов
Отладка регулярных выражений
Обработка лога
Анализ записи числа
Множественная замена
Работа с несколькими файлами
Работа с Unicode
Заключение
Язык программирования Python
Формат CSV
Пакет email
Разбор сообщения. Класс Message
Формирование сообщения
Разбор поля заголовка
Язык XML
Формирование XML-документа
Анализ XML-документа
Пространства имен
Заключение
Язык программирования Python
CGI-сценарии
Модуль cgi
Что после CGI?
Среды разработки
Zope и его объектная модель
Заключение
Язык программирования Python
Работа с сокетами
Модуль smtplib
Модуль poplib
Модули для клиента WWW
Функции для загрузки сетевых объектов
Функции для анализа URL
Возможности urllib2
XML-RPC сервер
Заключение
Язык программирования Python
Основные понятия реляционной СУБД
Что такое DB-API 2
Описание DB API 2.0
Интерфейс модуля
Объект-соединение
Объект-курсор
Объекты-типы
Работа с базой данных из Python-приложения
Знакомство с СУБД
Создание базы данных
Наполнение базы данных
Выборки из базы данных
Другие СУБД и Python
Заключение
Язык программирования Python
О потоках управления
Пример многопоточной программы
Функции модуля threading
Класс Thread
Таймер
Замки
Когда нужны замки?
Тупиковая ситуация (deadlock)
Семафоры
События
Условия
Очередь
Модуль thread
Визуализация работы потоков
Заключение
Язык программирования Python
Обзор графических библиотек
О графическом интерфейсе
Основы Tk
Классы виджетов
События
Создание и конфигурирование виджета
Виджет форматированного текста
Менеджеры расположения
Изображения в Tkinter
Графическое приложение на Tkinter
Заключение
Ссылки
Язык программирования Python
C API
Написание модуля расширения
Пример встраивания интерпретатора в программу на C
Использование SWIG
Простой пример использования SWIG
Интеграция Python и других систем программирования
Java
Prolog
OCaml
Pyrex
Заключение
Язык программирования Python
Лексический анализ
Синтаксический анализ
Получение байт-кода
Изучение байт-кода
Отладка
Профайлер
Модуль profile
Модуль timeit
Оптимизация
Pychecker
Исследование объекта
Модуль inspect
Заключение