- •1. Базові поняття
- •1.1. Алгоритми і програми
- •1.2. Мови програмування і рівні абстракції
- •Було відмічено, що всі обчислення зводяться до наступних елементарних дій:
- •Але, мови високого рівня мають багато переваг:
- •1.3. Формальні і природні мови
- •1. Однозначність
- •2. Надмірність
- •1.4. Інтерпретатори і компілятори
- •1.5. Перша програма
- •Існує два способи використання інтерпретатора:
- •1.6. Що таке відлагодження?
- •1.6.1. Синтаксичні помилки (syntax errors)
- •1.6.2. Помилки виконання (runtime errors)
- •1.6.3. Семантичні помилки (semantic errors)
- •1.6.4. Процес відлагодження
- •1.7 Довідкова система
- •1.7. Коментарі в програмах
- •1.8. Створення скриптів
- •1.9 Поняття модуля
- •Імпортування модулів
- •Стандартна бібліотека Python
- •Модулів, що тісно пов'язані з інтерпретатором
- •Модулі для інтерфейсу з операційною системою
- •Окрему групу складають модулі, специфічні для юнікса:
- •Є модулі для доступу до зовнішніх бібліотек.
- •Мережні протоколи
- •Бібліотека Python містить засоби створення серверів.
- •Інші модулі
- •Методичні вказівки
Імпортування модулів
import <модуль1> [, <модуль2> ]* |
Під’єднує зовнішні модулі. |
from <модуль> import <имя1> [, <имя2> ]* |
Імпортування імен (функцій, класів, змінних тощо) з <модуля>. |
from <модуль> import * |
Імпортує всі імена з <модуля>, за виключенням імен, що починаються з символу "_". |
Стандартна бібліотека Python
Великим надбанням Python як інструменту програміста є стандартна бібліотека, що міститься у дистрибутиві. Перше, з чим стикається програміст - це, звичайно, вбудовані типи даних, вбудовані виключення, і вбудовані функції. Список їх є невеликим, але більшість функцій для маніпуляцій з рядками, з датою і часом, регулярними виразами і інші містяться в модулях стандартної бібліотеки. Маніпуляції з рядками робляться за допомогою модуля string, дата і час приходять з модуля time, регулярні вирази в модулі re, доступ до функцій операційної системи - модуль os, і так далі.
Розглянемо докладніше стандартну бібліотеку Python. Бібліотека складається з кількох розділів.
По-перше, модулі, що дають доступ до нутрощів інтерпретатора і особливостей мови і реалізації.
По-друге, модулі для маніпуляції з рядками, у тому числі і з юнікодовими рядками.
Модулі, що дають доступ до системної бібліотеки, в першу чергу математичні функції.
Модулі для написання тестів в стилі Extreme Programming.
Модулі для (відносно) переносимого способу доступу до функцій операційної системи.
У бібліотеку ж входить простій покроковий відлагоджувач та профілірувальник - засіб знаходження "вузьких місць" коду.
Окремий великий розділ бібліотеки - мережні протоколи і засоби Інтернет; Python - відмінний інструмент для написання клієнтів і серверів, CGI, парсеров HTML/XML і т.д.
Модулі
Перший важливий модуль - sys, модуль доступу до Системи. Не операційній системі, а Системі. Тобто до інтерпретатора. Найпопулярніша функція з цього модуля - exit, тобто завершення роботи інтерпретатора. Втім, вона в модулі не єдина. Ще є функції отримання інформації про останнє виключення, хуки для відлагоджувачів та профілірувальників, і тому подібні "потрухи" інтерпретатора. Декілька цікавих змінних - стандартні потоки введення/виводу - stdin, stdout і stderr.
Модулів, що тісно пов'язані з інтерпретатором
Модуль gc дозволяє управляти збіркою сміття.
Модуль atexit дає можливість кожному модулю зареєструвати функцію деинициализации, яка викличеться при завершенні програми.
У модулі types перераховані всі вбудовані типи даних, так що програміст може виконати перевірку if type(myvar) == types.ListType...
Модуль inspect - для інтроспективної об'єктів під час виконання.
Модуль traceback дозволяє отримати і роздрукувати інформацію про виключення. Parser дійсно дає доступ до внутрішнього парсеру мови, а imp дозволяє управляти імпортом модулів. Здавалося б, навіщо їм управляти? Дуже просто - раптом програма розповсюджується в нестандартному вигляді або на нестандартному носієві, скажімо, в zip-файлі. Тут можливість імпортувати модулі особливим чином програмістові сильно стане в нагоді.
Модулі marshal, pickle і shelve дозволяють серіалізовувати об'єкти, тобто перетворювати їх на потік байт, який потім можна зберегти у файл або передати по мережі. Згодом серіалізовані об'єкти можна відновити засобами тих же модулів. Marshal вміє серіалізовувати тільки вбудовані типи даних, включаючи Python-овський байт-код. Цей модуль використовується самим інтерпретатором для завантаження збереженого байт-коду з файлу при імпорті модуля. Pickle не вміє серіалізовувати і відновлювати байт-код, і це зроблено спеціально, для безпеки, щоб програміст був упевнений, що не отримає по мережі вірус в байт-коді. Зате у pickle є засоби, за допомогою яких програміст може управляти серіалізацією і відновленням своїх об'єктів. Модуль shelve дозволяє зберігати серіалізовані об'єкти в дискових хешах (BERKELEYDB, (G/N) DBM).
Модулі dumbdbm, dbm, gdbm, bsddb надають доступ до відповідних вбудованих баз даних.
Модуль anydbm є оболонкою з єдиним API, який дозволяє використовувати будь-яку базу даних.
Модуль whichdb дозволяє визначити, в якому форматі є поточна база даних.
String - модуль для маніпуляції з рядками без регулярних виразів. Тут зібрані функції для пошуку підрядка в рядку, заміни і тому подібне.
Регулярні вирази - в модулі re. Довгий час цей модуль був інтерфейсом до бібліотеки PCRE (Perl-Compatible Regular Expressions), але в Python 2.0 був повністю переписаний для того, щоб працювати не тільки з ASCII-рядками, але і з юнікодом.
Модуль locale дає доступ до функцій локалізації, наявних в операційній системі; при установки локалі цей модуль модифікує змінні модуля string відповідно до встановленої локалі.
