2. Бібліотеки
• збірка об'єктів чи підпрограм для
вирішення близьких за тематикою
задач.
Залежно від мови програмування
бібліотеки містять об'єктні модулі чи
сирцевий код та дані, допоміжні для
задіяння та інтеграції нових
можливостей в програмні рішення.
3. Навіщо?
• Написання нового програмного
коду вимагає часу, тому зручно
повторно використовувати
частини готових програм.
• Ці фрагменти коду можна
зберігати у бібліотеках
4. Стандартна бібліотека Python
містить такі модулі
• subprocess
• fractions
• cmath
• glob
• copy
• os.path
• json
• calendar
• os
• pickle
• datetime
• bisect
• collections
• array
• itertools
• time
• sys
• random
• math
• socket…
5. Модуль random
• Цей модуль вибирає випадкові
числа або переставляє елементи
списку у випадковому порядку
8. Модуль time
• Підкаже поточний час і дату
• Може обчислювати дати:
наприклад, який день буде три дні
потому?
Модуль datetime
•надає класи для обробки часу і дати
різними способами
9. Приклад
>>> from datetime import datetime,
date, time
>>> d = date(2005, 7, 14)
>>> t = time(12, 30)
>>> datetime.combine(d, t)
datetime.datetime(2005, 7, 14, 12,
30)
10. Pygame
• Бібліотека для створення
відеоігор
• Дозволяє працювати зі звуком і
спеціальною ігровою графікою
11. Завантаження модулів
>>> import math >>>
math.e
2.718281828459045
>>> import time, random
>>> time.time() 1376047104.056417
>>> random.random()
0.9874550833306869
19. Зірка
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
Почати слідкувати за
черепашкою для
заповнення області
Заповнити кольором
область, пройдену
черепашкою,
починаючи
з begin_fill();
Повернутися поточне місце
розташування черепахи
20.
21. Черепашка навколо
сонця
1. from turtle import *
2. color("orange")
3. dot(10)
4. center = pos()
5. color("blue")
6. shape("turtle")
7. speed(0)
8. penup()
9. goto(200, 0)
10. pendown()
11. G = 800
12. v = Vec2D(0, 1)
13. t = 0
14. dt = 1
15.while t < 1100:
16. goto(pos() + v * dt)
17. setheading(towards(center))
18. r = distance(center)
19. acc = (-G / r ** 3) * pos()
20. v += acc * dt
21. t += dt
22.
23.mainloop()
Малювання точки діаметром
Завершити малювання
Почати малювання
Повернути
черепашку під
кутом
22.
23. Основні команди для
керування черепашкою
• forward(distance) Проповзти вперед на distance
пікселів;
• backward(distance) Проповзти назад на
distance пікселів;
• right(angle) Повернутися наліво на angle
градусів;
• left(angle) Повернутися направо на angle
градусів;
• goto(x, y) Перемістити черепашку в точку з
координатами (x,y);
• setx(x) Установити координату x черепашки;
• sety(y) Установити координату y черепашки;
24. Основні команди для
керування черепашкою
• setheading(to_angle) Повернути черепашку
під кутом to_angle до вертикалі (0 — наверх,
90 — направо);
• home() Повернути черепашку додому — в
точку з координатами (0,0);
• circle(radius) Намалювати коло радіуса |r|,
центр якої знаходиться зліва від черепашки,
якщо r>0 і праворуч, якщо r<1;
• dot(size, color) Намалювати точку діаметра
size кольору color;
• undo() Відкотити попереднє дію черепашки
Більше на http://server.179.ru/tasks/python/2017b1/pgm12.5_Turtle.html
26. Раціональні числа можна,
як int і float, складати,
множити, ділити
>>> from fractions import Fraction
>>> a = Fraction(1, 7)
>>> b = Fraction(1, 3)
>>> a + b
Fraction(10, 21)
>>> a * b
Fraction(1, 21)
27. fractions.gcd(a, b) -
найбільший спільний дільник
>>> from fractions import gcd
>>> gcd(1, 5)
1
>>> gcd(1000, 3)
1
>>> gcd(4, 6)
2
28. Модуль cmath
• надає функції для роботи з
комплексними числами.
Модуль glob
•знаходить всі шляхи, які збігаються з
заданим шаблоном у відповідності з
правилами, використовуваними
оболонкою Unix.
29. Модуль copy
• операція присвоювання не копіює
об'єкт, він лише створює
посилання на об'єкт.
• Для змінюваних колекцій, або для
колекцій, які містять змінні
елементи, часто необхідна така
копія, щоб її можна було змінити,
не змінюючи оригінал.
• Надає загальні (поверхнева та
глибока) операції копіювання
30. Модуль copy
• copy.copy(x) - повертає
поверхневу копію x.
• copy.deepcopy(x) - повертає повну
копію x.
• Исключениесору.error - виникає,
якщо об'єкт неможливо
скопіювати.
32. Модуль functools
• збірник функцій високого рівня:
взаємодіючих з іншими функціями або
повертають інші функції.
• @functools.lru_cache(maxsize=128,
typed=False) - декоратор, який зберігає
результати maxsize останніх викликів.
Це може заощадити час при дорогих
обчисленнях, якщо функція періодично
викликається з тими ж аргументами.
33. >>> from functools import lru_cache
>>> # Числа Фібоначчі
>>> @lru_cache(maxsize=None)
... def fib(n):
... if n < 2:
... return n
... return fib(n-1) + fib(n-2)
>>> print([fib(n) for n in range(100)])
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,...]
>>> print(fib.cache_info())
CacheInfo(hits=196, misses=100,
maxsize=None, currsize=100)
34. Модуль calendar
дозволяє надрукувати собі
календарик а також містить деякі
інші корисні функції для роботи з
календарями):
•calendar.setfirstweekday(weekday) -
встановлює перший день тижня
•calendar.firstweekday() - повертає
перший день тижня
•calendar.isleap(year) - є рік
високосним…
36. Модуль os
• надає безліч функцій для роботи з
операційною системою, причому
їх поведінка, як правило, не
залежить від ОС, тому програми
залишаються стерпними.
37. Модуль os
>>> import os
>>> os.getcwd()
'C:Python33‘ - поточна робоча
директорія.
>>> os.name
'nt' - ім'я операційної системи.
38. Модуль json
• JSON (JavaScript Object Notation) -
простий формат обміну даними,
що базується на підмножині
синтаксису JavaScript. Модуль
json дозволяє кодувати і
декодувати дані в зручному
форматі.
40. Модуль sys
забезпечує доступ до деяких змінних і
функцій, взаємодіючим з інтерпретатором
python.
•sys.argv - список аргументів командного
рядка, що передаються сценарієм Python.
•sys.copyright - рядок, що містить авторські
права, що належать до інтерпретатору
Python.
•sys.exec_prefix - каталог установки Python.
•sys.executable - шлях до інтерпретатору
Python.
42. Модуль array
• визначає масиви в python
from array import array
a = array("i", [10, 20, 30])
for value in a:
print(value)
10 20 30
43. Методи array
• array.append(х)
• array.count ()
• array.extend(iter) - додавання елементів об'єкта в
масив.
• array.fromfile(F, N) - читає N елементів з файлу і
додає їх в кінець масиву.
• array.fromlist(список) - додавання елементів зі
списку.
• array.index(х) - номер першого входження x в
масив.
• array.pop(i) - видаляє i-ий елемент масиву і
повертає його.
• array.remove(х) - видалити перше входження х з
масиву.
• array.reverse() - зворотний порядок елементів у
масиві.
44. Приклад
import array
a = array.array('i', xrange(5))
a.extend(xrange(5))
print 'Extended:', a
Extended: array('i', [0, 1, 2, 3, 4, 0, 1,
2, 3, 4])
45. Масив
• Набір однотипних елементів, що мають
спільне ім'я, доступ до яких що здійснюється
по індексу.
• Є структурою з довільним доступом по
індексу
• У Python масив реалізований за допомогою
типу даних «список»
• Вони використовуються рідко, коли потрібно
досягти високої швидкості роботи. В інших
випадках масиви можна замінити іншими
типами даних: списками, кортежами, рядками.
46. Масив (матриця)
Часто в задачах доводиться
зберігати прямокутні таблиці з
даними. Такі таблиці називаються
матрицями, або двовимірними
масивами. У мові програмування
Python таблицю можна представити
у вигляді списку рядків, кожен
елемент якого є в свою чергу
списком, наприклад, чисел
50. def printer(event):
print ("Очередной 'Hello World!'")
Завдання кнопки вивести якесь
повідомлення у потік виводу,
використовуючи функцію print.
Робити вона це буде при натисканні на
неї лівою кнопкою миші.
Дії (алгоритм), які відбуваються при цій чи
іншій події, оформляють у вигляді
функції, а потім викликають, коли вони
знадобляться.
Параметр event – це яка-небудь подія.
51. root = Tk()
Об'єкт вікна верхнього рівня створюється
при зверненні до класу Tk модулі tkinter.
Змінну пов'язану з об'єктом-вікном
прийнято називати root
but = Button(root)
Кнопка створюється при зверненні до
класу Button модулі tkinter. Об'єкт кнопка
зв'язується з якої-небудь змінною (but). У
класі Button є обов'язковий параметр —
об'єкт, якому кнопка належить (root).
52. but["text"] = "Печать"
У кнопки багато властивостей:
розмір, колір фону і напису та ін.
Поки встановимо лише одну
властивість — текст (text)
but.bind("<Button-1>",printer)
Подія натискання лівою кнопкою
миші виглядає так: <Button-1>.
Потрібно зв'язати цю подію з
обробником (функцією printer). Для
зв'язку призначений метод bind.
53. but.pack()
Для відображення кнопки у вікні
використовується методу pack.
root.mainloop()
Для відображення галвного вікна
використовується метод mainloop.
54. Імітатор кубика
from tkinter import *
from random import randint
def roll():
text.delete(0.0, END)
text.insert(END, str(randint(1,6)))
window = Tk()
text = Text(window, width=1, height=1)
buttonA = Button(window, text='Press to
roll!', command=roll)
text.pack()
buttonA.pack()
60. from random import *
from tkinter import *
size = 500
window = Tk()
canvas = Canvas(window, width=size, height=size)
canvas.pack()
while True:
col = choice(['pink', 'orange', 'purple', 'yellow',
'red', 'green', 'blue'])
x0 = randint(0, size)
y0 = randint(0, size)
d = randint(0, size/5)
canvas.create_oval(x0, y0, x0+d, y0+d, fill=col)
window.update()
61.
62. Реакція на події
<Button-1> <Right>
<Button-3>
<space>
<Left>
<Up>
<KeyPress-a>
<Down>
Події миші Події клавіатури
Клік
лівою
кнопкою
Клік
правою
кнопкою
Натиснута
стрілка
вправо
Натиснута
стрілка
вліво
Натиснута
клавіша
«пробіл»
Натиснута
стрілка
вверх
Натиснута
стрілка
вниз
Натиснута
клавіша а Можна
поставити
різні літери
63. li = ["red","green"]
def color(event):
fra.configure(bg=li[0])
li[0],li[1] = li[1],li[0]
def outgo(event):
root.destroy()
from tkinter import *
root = Tk()
fra = Frame(root,width=100,height=100)
but = Button(root,text="Выход")
fra.pack()
but.pack()
root.bind("<Return>",color)
but.bind("<Button-1>",outgo)
root.mainloop()
64.
65. Створення свого
модуля на Python
Створимо файл mymodule.py, в якій
визначимо які-небудь функції:
def hello():
print('Hello, world!')
def fib(n):
a = b = 1
for i in range(n - 2):
a, b = b, a + b
return b
66. Створення свого
модуля на Python
Тепер у цій же папці створимо
інший файл, наприклад, main.py:
import mymodule
mymodule.hello()
print(mymodule.fib(10))
67. Створення свого
модуля на Python
def hello():
print('Hello, world!')
def fib(n):
a = b = 1
for i in range(n - 2):
a, b = b, a + b
return b
if __name__ == "__main__":
hello()
for i in range(10):
print(fib(i))