• 0 Items - 0.00лв.
    • Количката е празна

24.95лв.

Python – решения на практически задачи

Share

Тази книга дава решения на различни практически задачи, възникващи при разработката на приложения с Python. Примерите са събрани в следните категории:

  • Числа, дата и време – изчисления с масиви, дати или време;
  • Алгоритми за работа със структури от данни – търсене, сортиране, подреждане и филтриране на данни;
  • Практически примери, обхващащи всякакви ситуации за работа с низове;
  • Работа с файлове – четене и запис, съхраняване на структурирани данни. Работа с компресирани, CSV, JSON и XML файлове.
  • Функции – представяне на необичайни и по-разширени способи за дефиниране на функции, както и разглеждане на различни образци на използване;
  • Итератори и генератори – тук са показани типичните задачи, използващи итерация;
  • Класове и обекти – създаване на обекти, използване на специалните методи, методи за енкапсулация, наследяване, управление на паметта. Представени са и полезни шаблони за разработка;
  • Модули и пакети – организация на пакетите, разделяне на големите модули на няколко файла и създаване на пакети на пространство от имена;
  • Мрежово и уеб програмиране – използване на Python в мрежови и разпределени приложения. Дадени са примери както за създаването на клиентски, така и на сървърни приложения;
  • Паралелизъм – различни подходи за паралелно програмиране, в това число програмиране на нишки, стартиране на под­процеси, а също така и различни прийоми, използващи функции генератори;
  • Създаване на полезни инструменти за системния администратор – анализ на параметрите на командния ред, работата с файлове във файловата система и получаване на полезни данни за конфигурацията на системата;
  • С-разширения – свързване на C-код с код на Python, както и портирането на кода на разширение от версия 2 на Python във версия 3;
  • Обработка на изключения – типове изключения и обработка на няколко изключения;
  • Графични примитиви – създаване на нови и обръщане към съществуващи графични примитиви;
  • Писане на реални програми – програма за рисуване Paint и играта Змията. Играта е един от най-сложните типове приложения, тъй като тя съчетава в себе си работа с графика, музика и сложна логика;
  • Шифроване на данни – инструменти за хеширане, пакетите PyCrypto и cryptography.
Python - решения на практически задачи
Година

2018

Корици

Меки

Преводач

Влади Владев

Страници

382

Формат

159х235

Съдържание

Въведение…9
Накратко за Python…9
Крос платформеност…10
Python – един от най-простите езици за програмиране…10
Популярността на Python…11
Интегрируемост…12
Python поддържа ICE…13
Колко струва?…13
Как да четем тази книга?…14

Глава 1. Инсталиране и начало на работа …15
1.1. Изтегляне на Python…15
1.2. Инсталиране на Python в Windows…15
1.3. Инсталиране на Python в други операционни системи…18
1.4. Програмиране на Python за Android…19

Глава 2. Числа, дата и време…20
2.1. Закръгляне на числови стойности…20
2.2. Извършване на точни десетични изчисления с помощта на модула Decimal…22
2.3. Изчисления с помощта на модула Math. Изчисляване на сума на списък…25
2.4. Форматиране на числа за извод…26
2.5. Преобразуване на големи целочислени стойности в байтов низ и обратно…27
2.6. Работа с цели числа в двоична, осмична и шестнайсетична система…28
2.7. Операции с комплексни числа…30
2.8. Infinity и NaN…31
2.9. Изчисления с дроби. Модулът fractions…32
2.10. Изчисления с големи числови масиви. Библиотеката NumPy…33
2.11. Случаен избор. Модулът random…34
2.12. Преобразуване на дни в секунди и други базови операции, свързани с преобразуването на време…36
2.13. Преобразуване на низ в datetime…37
2.14. Работа с дати с часови пояси…39

Глава 3. Структури от данни…41
3.1. Разопаковаме последователност в отделни променливи…41
3.2. Разопаковане на елементи от итерируеми обекти с произволна дължина…42
3.3. Съхранение на последните елементи…45
3.4. Търсене на най-големите и най-малките елементи…48
3.5. Приоритетна опашка…50
3.6. Подредено съхранение в речници…54
3.7. Операции с речници…56
3.8. Търсене на сечението на два речника…59
3.9. Изтриване на дублиращи се елементи от последователност …60
3.10. Определяне на най-често срещащия се елемент в последователност…62
3.11. Сортиране на обекти без поддръжката на сравнение …63
3.12. Групиране по поле …64
3.13. Филтрираме елементите на последователност …66
3.14. Подмножество на речник …67
3.15. Мапинг на имена в елементи на последователност …68

Глава 4. Работа с низове…71
4.1. Разделяне на низ с използването на разделител…71
4.2. Използване на маски на обвивката…72
4.3. Съвпадение на текст в началото и края на низа…74
4.4. Регулярни изрази …75
4.5. Търсене и замяна на текст…79
4.6. Изтриване на нежелани символи от низ…81
4.7. Заместваме стойности на променливи в низ…82
4.8. Подравняване на текстови низове…86
4.9. Съединение на низове…87
4.9. Преформатиране на текст. Фиксиране на броя на колоните…89

Глава 5. Работа с файлове…92
5.1. Четене на информация от текстов файл…92
   5.1.1 Демонстрация на различни способи за четене от файл…92
   5.1.2. Отваряне и затваряне на файл…95
   5.1.3. Четене от файл символ по символ. Четене на целия файл наведнъж…96
   5.1.4. Четене на ред символ по символ…97
   5.1.5. Четене на всички редове от файла в списък…98
   5.1.6. Превъртане на редовете на файл…99
5.2. Запис в текстов файл…99
   5.2.1. Запис на ред във файл…99
   5.2.2. Запис на списък от редове във файл…100
   5.2.3. Пренасочване на функция print() във файл…100
5.3. Четене и запис на компресирани файлове …100
5.4. Проверка за съществуване и получаване на допълнителна информация за файла…102
5.5. Съхраняване на структурирани данни във файл…103
 5.5.1. Въведение в консервацията…103
   5.5.2. Четене на данни от бинарен файл…105
   5.5.3. Произволен достъп до консервирани данни…106
5.6. Работа с популярни формати…107
5.6.1. Работа със CSV данни…107
   5.6.2. Четене и запис на JSON данни…110
   5.6.3. Парсинг на XML файлове…111

Глава 6. Функции…114
6.1. Функции с променлив брой параметри…114
6.2. Функции, които приемат само именувани аргументи…116
6.3. Присъединяване на информационни метаданни към аргументите на функциите…117
6.4. Връщане на няколко стойности от функция …118
6.5. Дефиниране на функции с параметри по подразбиране…119
6.6. Дефиниране на анонимни или вградени функции…123
6.7. Захващане на променливи в анонимни функции…125
6.8. Намаляване броя на аргументите на извикваемо (callable)…127
6.9. Замяна на класове, състоящи се от един метод, с функции…129
6.10. Пренасяне на допълнително състояние във функция за обратно извикване…130
6.11. Вградени функции за обратно извикване…135

Глава 7. Итератори и генератори…139
7.1. Ръчно използване на итератор…139
7.2. Делегирани итерации…140
7.3. Създаване на нов шаблон за итерация с помощта на генератори…141
7.4. Реализация на протокола на итератор…143
7.5. Итерация в обратна посока…146
7.6. Екстра състояние на функцията генератор…148
7.7. Пропускане на първата част на итерируемо…149
7.8. Итериране по всички възможни комбинации или пермутации…151

Глава 8. Класове и обекти…154
8.1. Икономия на паметта при създаване на голямо количество екземпляри…154
8.2. Поддръжка на оператора with…155
8.3. Промяна на низовото представяне на екземплярите…159
8.4. Настройка на форматирането на низа…160
8.5. Енкапсулация на имената в класа…161
8.6. Създаване на управляеми атрибути…163
8.7. Извикване на метод на родителския клас…165
8.8. Разширение на свойство в подклас…167
8.9. Създаване на нов вид клас на атрибута на класа или на екземпляра…171
8.10. Реализация на обекти със съхраняване на състояния или крайни автомати…173
8.11. Създаване на класове с поддръжка на операции за сравнение…177
8.12. Управление на паметта в циклични структури данни…179
8.13. Извикване на метода на обекта, името на който е зададено във вид на низ…184
8.14. Дефиниране на няколко конструктора в клас…186
8.15. Създаване на екземпляр без извикване на init…187

Глава 9. Модули и пакети…190
9.1. Създаване на йерархически пакет от модули…190
9.2. Управление на импорта на всичко…191
9.3. Импортиране на подмодулите на пакета с използване на относителни имена…192
9.4. Разделяне на модула на няколко файла…194
9.5. Създаване на отделни папки на импорта на кода под общо пространство от имена…197
9.6. Презареждане на модули…199
9.7. Създаване на папка или zip архив, изпълняван като главен сценарий…201
9.8. Четене на файлове с данни в пакет…202
9.9. Добавяне на папки в sys.path…203
9.10. Импорт на модули с използването на името на модула, зададено в низ…205
9.11. Разпространение на пакети…206

Глава 10. Мрежово и уеб програмиране …209
10.1. Взаимодействие с HTTP сървиси в качеството на клиент…209
10.2. Прост TCP сървър…214
10.3. Прост UDP сървър…220
10.4. Реализация на просто извикване на процедура за отдалечено извикване (RPC) с помощта на XML-RPC…222
10.5. Реализация на RPC (отдалечено извикване на процедури)…225
10.6. Проста автентификация на клиенти…228
10.7. Изпращане и получаване на големи масиви…230
10.8. Генериране на диапазон от IP адреси от CIDR адрес…233

Глава 11. Паралелизъм…236
11.1. Стартиране и спиране на нишки…236
11.2. Стартирана ли е нишката? Определяне състоянието на нишката…241
11.3. Обмен на информация между нишки. Опашки…245
11.4. Съхранение на състоянието на нишката…252
11.5. Създаване на пул от нишки…255
11.8. Още веднъж за GIL…259

Глава 12. Пишем полезни инструменти за системния администратор …264
12.1. Приемаме вход на сценария чрез пренасочване, канали и входящи файлове…264
12.2. Затваряне на програмата със съобщение за грешка…265
12.3. Разбор на параметрите на командния ред…266
12.4. Искане на парола по време на изпълнение…270
12.5. Получаване на размера на терминала…271
12.6. Изпълнение на външна команда и получаване на нейния извод…272
12.7. Копиране или преместване на файлове и папки…274
12.8. Архивиране и разархивиране…277
12.9. Търсене на файлове по имена…278
12.10. Четене на INI файлове…280
12.11. Добавяне на протоколиране в прости сценарии…281
12.12. Създаване на таймер за секундомер…284
12.13. Стартиране на уеб браузър…286

Глава 13. С-разширения: свързваме C-код с код на Python…288
13.1. Достъп до C-код с използване на модула ctypes…290
13.2. Писане на прост модул на C-разширение…298
13.3. Писане на функция на разширение, която работи с масиви…303
13.4. Управление на непрозрачни указатели в допълнителни С-модули…307
13.5. Извикваме Python от C…309
13.6. Глобалното блокиране на интерпретатора…316
13.7. C-нишки и Python…317
13.8. Използване на Swig…318
13.9. Използване на Cython…325

Глава 14. Обработка на изключения…334
14.1. Какво е изключителна ситуация?…334
14.2. Конструкцията try/except…335
14.3. Типове изключения…335
14.4. Блокът else…338

Глава 15. Графични примитиви…339
15.1. Геометрични примитиви. Програмата „Нарисувай“…339
15.2. Обръщане към вече съществуващи графични примитиви…344

Глава 16. Практически пример: Paint със собствени ръце…348
16.1. Класът Paint и разработка на скелето на приложението …348
16.2. Разработка на метод draw()…351
16.3. Променяме цвета и размера на четката…353

Глава 17. Пишем игра: Змията на Python…359
17.1. За разработката на играта…359
17.2. Създаване на прозореца на приложението…359
17.3. Деклариране на спомагателни променливи…360
17.4. Създаване на игровото поле…360
17.5. Създаване на основните класове…361
17.7. Пълен изходен код…367
17.8. Как можем да усъвършенстваме играта?…370

Приложение 1. Средства за шифроване в Python…375
1. Хеширане…375
2. PyCrypto…376
2.1. Инсталиране…376
2.2. Шифроване на низ…377
2.3. Шифроване на файлове с помощта на RSA…378
3. Пакетът cryptography…381