68
Python. Модулі доц., к.пед.н. Осадча К.П.

Модулі Python

  • Upload
    -

  • View
    419

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Модулі Python

Python. Модулідоц., к.пед.н. Осадча К.П.

Page 2: Модулі Python

Бібліотеки

• збірка об'єктів чи підпрограм для вирішення близьких за тематикою задач.

Залежно від мови програмування бібліотеки містять об'єктні модулі чи сирцевий код та дані, допоміжні для задіяння та інтеграції нових можливостей в програмні рішення.

Page 3: Модулі Python

Навіщо?• Написання нового програмного

коду вимагає часу, тому зручно повторно використовувати частини готових програм.

• Ці фрагменти коду можна зберігати у бібліотеках

Page 4: Модулі Python

Стандартна бібліотека Python містить такі модулі

• subprocess• fractions• cmath• glob• copy• os.path• json• calendar• os• pickle

• datetime• bisect• collections• array• itertools• time• sys• random• math• socket…

Page 5: Модулі Python

Модуль random• Цей модуль вибирає випадкові

числа або переставляє елементи списку у випадковому порядку

Page 6: Модулі Python

>>> random.random() 0.37444887175646646 >>> random.uniform(1, 10) 1.1800146073117523 >>> random.randrange(10) 7 >>> random.randrange(0, 101, 2) 26 >>> random.choice('abcdefghij') 'c' >>> random.sample([1, 2, 3, 4, 5], 3) [4, 1, 5]

Модуль random

Page 7: Модулі Python

Модуль socket• Допомагає комп'ютерам

підключатися один до одного по мережі і через Інтернет

Page 8: Модулі Python

Модуль time• Підкаже поточний час і дату• Може обчислювати дати:

наприклад, який день буде три дні потому?

Модуль datetime •надає класи для обробки часу і дати різними способами

Page 9: Модулі Python

Приклад

>>> 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)

Page 10: Модулі Python

Pygame• Бібліотека для створення

відеоігор• Дозволяє працювати зі звуком і

спеціальною ігровою графікою

Page 11: Модулі Python

Завантаження модулів>>> import math >>> math.e 2.718281828459045

>>> import time, random >>> time.time() 1376047104.056417 >>> random.random() 0.9874550833306869

Page 12: Модулі Python

Використання псевдонімів

>>> import math as m >>> m.e 2.718281828459045

Page 13: Модулі Python

Інструкція from>>> from math import (sin, cos, tan, atan)...>>> from math import e, ceil as c >>> e 2.718281828459045 >>> c(4.6) 5

Page 14: Модулі Python

Інструкція from>>> from sys import * >>> version '3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)]' >>> version_info sys.version_info(major=3, minor=3, micro=2, releaselevel='final', serial=0)

Page 15: Модулі Python

Довідка

Page 16: Модулі Python

turtle• Слугує для малювання ліній і

фігур на екрані

Page 17: Модулі Python

Модуль turtlefrom turtle import *reset()left(90)forward(100)right(45)forward(70)right(90)forward(70)right(45)forward(100)right(90)forward(100)

Завантажує модуль

Обнуляє позицію черепашки

Просуває черепашку вперед на 70

Повертає черепашку на 90градусів вправо

Page 18: Модулі Python

Результат

Page 19: Модулі Python

Зіркаfrom turtle import *color('red', 'yellow')begin_fill()while True: forward(200) left(170) if abs(pos()) < 1: breakend_fill()done()

Почати слідкувати за черепашкою для заповнення області

Заповнити кольором область, пройдену черепашкою, починаючи з begin_fill();

Повернутися поточне місце розташування черепахи

Page 20: Модулі Python
Page 21: Модулі Python

Черепашка навколо сонця

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 = 80012.v = Vec2D(0, 1)13.t = 014.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 * dt21.    t += dt22. 23.mainloop()

Малювання точки діаметром

Завершити малювання Почати малювання

Повернути черепашку під кутом

Page 22: Модулі Python
Page 23: Модулі Python

Основні команди для керування черепашкою

• forward(distance) Проповзти вперед на distance пікселів;

• backward(distance) Проповзти назад на distance пікселів;

• right(angle) Повернутися наліво на angle градусів; • left(angle) Повернутися направо на angle градусів; • goto(x, y) Перемістити черепашку в точку з

координатами (x,y); • setx(x) Установити координату x черепашки;• sety(y) Установити координату y черепашки;

Page 24: Модулі Python

Основні команди для керування черепашкою• 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

Page 25: Модулі Python

Модуль fractionsнадає підтримку раціональних чисел>>> Fraction(1, 3) Fraction(1, 3) >>> >>> Fraction('3/7') Fraction(3, 7) >>> Fraction(100) Fraction(100, 1) >>> Fraction() Fraction(0, 1) >>> Fraction('3.1415') Fraction(6283, 2000) >>> Fraction(3.1415) Fraction(7074029114692207, 2251799813685248)

Page 26: Модулі Python

Раціональні числа можна, як int і float, складати,

множити, ділити>>> from fractions import Fraction >>> a = Fraction(1, 7) >>> b = Fraction(1, 3) >>> a + b Fraction(10, 21) >>> a * b Fraction(1, 21)

Page 27: Модулі Python

fractions.gcd(a, b) - найбільший спільний дільник

>>> from fractions import gcd >>> gcd(1, 5) 1 >>> gcd(1000, 3) 1 >>> gcd(4, 6) 2

Page 28: Модулі Python

Модуль cmath• надає функції для роботи з

комплексними числами.

Модуль glob

•знаходить всі шляхи, які збігаються з заданим шаблоном у відповідності з правилами, використовуваними оболонкою Unix.

Page 29: Модулі Python

Модуль copy• операція присвоювання не копіює

об'єкт, він лише створює посилання на об'єкт.

• Для змінюваних колекцій, або для колекцій, які містять змінні елементи, часто необхідна така копія, щоб її можна було змінити, не змінюючи оригінал.

• Надає загальні (поверхнева та глибока) операції копіювання

Page 30: Модулі Python

Модуль copy• copy.copy(x) - повертає поверхневу

копію x.

• copy.deepcopy(x) - повертає повну копію x.

• Исключениесору.error - виникає, якщо об'єкт неможливо скопіювати.

Page 31: Модулі Python

Модуль copy>>> import copy >>> test_1 = [1, 2, 3, [1, 2, 3]] >>> test_copy = copy.copy(test_1) >>> print(test_1, test_copy) [1, 2, 3, [1, 2, 3]] [1, 2, 3, [1, 2, 3]]

Page 32: Модулі Python

Модуль functools• збірник функцій високого рівня:

взаємодіючих з іншими функціями або повертають інші функції.

• @functools.lru_cache(maxsize=128, typed=False) - декоратор, який зберігає результати maxsize останніх викликів. Це може заощадити час при дорогих обчисленнях, якщо функція періодично викликається з тими ж аргументами.

Page 33: Модулі Python

>>> 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)

Page 34: Модулі Python

Модуль calendarдозволяє надрукувати собі календарик а також містить деякі інші корисні функції для роботи з календарями):•calendar.setfirstweekday(weekday) - встановлює перший день тижня•calendar.firstweekday() - повертає перший день тижня•calendar.isleap(year) - є рік високосним…

Page 35: Модулі Python

Приклад calendarimport calendar cal = calendar.month(2015, 11) print "Here is the calendar:" print cal

Page 36: Модулі Python

Модуль os• надає безліч функцій для роботи з

операційною системою, причому їх поведінка, як правило, не залежить від ОС, тому програми залишаються стерпними.

Page 37: Модулі Python

Модуль os>>> import os >>> os.getcwd() 'C:\\Python33‘ - поточна робоча

директорія.

>>> os.name 'nt' - ім'я операційної системи.

Page 38: Модулі Python

Модуль json• JSON (JavaScript Object Notation) -

простий формат обміну даними, що базується на підмножині синтаксису JavaScript. Модуль json дозволяє кодувати і декодувати дані в зручному форматі.

Page 39: Модулі Python

Модуль json>> import json >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) '["foo", {"bar": ["baz", null, 1.0, 2]}]' >>> print(json.dumps("\"foo\bar")) "\"foo\bar"

Page 40: Модулі Python

Модуль sysзабезпечує доступ до деяких змінних і функцій, взаємодіючим з інтерпретатором python.•sys.argv - список аргументів командного рядка, що передаються сценарієм Python.•sys.copyright - рядок, що містить авторські права, що належать до інтерпретатору Python.•sys.exec_prefix - каталог установки Python.•sys.executable - шлях до інтерпретатору Python.

Page 41: Модулі Python

Модуль sysimport sys for x in sys.argv: print "Argument: ", x

Page 42: Модулі Python

Модуль array• визначає масиви в python

from array import array a = array("i", [10, 20, 30]) for value in a:

print(value)

10 20 30

Page 43: Модулі Python

Методи 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() - зворотний порядок елементів у масиві.

Page 44: Модулі Python

Приклад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])

Page 45: Модулі Python

Масив• Набір однотипних елементів, що мають

спільне ім'я, доступ до яких що здійснюється по індексу.

• Є структурою з довільним доступом по індексу

• У Python масив реалізований за допомогою типу даних «список»

• Вони використовуються рідко, коли потрібно досягти високої швидкості роботи. В інших випадках масиви можна замінити іншими типами даних: списками, кортежами, рядками.

Page 46: Модулі Python

Масив (матриця)Часто в задачах доводиться зберігати прямокутні таблиці з даними. Такі таблиці називаються матрицями, або двовимірними масивами. У мові програмування Python таблицю можна представити у вигляді списку рядків, кожен елемент якого є в свою чергу списком, наприклад, чисел

Page 47: Модулі Python

Двомірний масив

matrix = [[1, 2, 3], [1, 2, 7], [4, 9, 2], [6, 2, 5]]print (matrix)[[1, 2, 3], [1, 2, 7], [4, 9, 2], [6, 2, 5]]

print matrix[0] [1, 2, 3]

print matrix[0][1] 2

Page 48: Модулі Python

Модуль tkinter• Для створення кнопок, вікон й

інших графічних елементів для взаємодії користувача з програмою

Page 49: Модулі Python

Створюємо головне вікноfrom tkinter import *   def printer(event):

print ("Очередной 'Hello World!'") root = Tk() but = Button(root) but["text"] = "Печать" but.bind("<Button-1>",printer)  but.pack() root.mainloop()

Page 50: Модулі Python

def printer(event): print ("Очередной 'Hello World!'")

Завдання кнопки вивести якесь повідомлення у потік виводу, використовуючи функцію print. Робити вона це буде при натисканні на неї лівою кнопкою миші. Дії (алгоритм), які відбуваються при цій чи іншій події, оформляють у вигляді функції, а потім викликають, коли вони знадобляться. Параметр event – це яка-небудь подія.

Page 51: Модулі Python

root = Tk()

Об'єкт вікна верхнього рівня створюється при зверненні до класу Tk модулі tkinter. Змінну пов'язану з об'єктом-вікном прийнято називати root

but = Button(root)

Кнопка створюється при зверненні до класу Button модулі tkinter. Об'єкт кнопка зв'язується з якої-небудь змінною (but). У класі Button є обов'язковий параметр — об'єкт, якому кнопка належить (root).

Page 52: Модулі Python

but["text"] = "Печать" У кнопки багато властивостей: розмір, колір фону і напису та ін. Поки встановимо лише одну властивість — текст (text)

but.bind("<Button-1>",printer)Подія натискання лівою кнопкою миші виглядає так: <Button-1>. Потрібно зв'язати цю подію з обробником (функцією printer). Для зв'язку призначений метод bind.

Page 53: Модулі Python

but.pack()Для відображення кнопки у вікні використовується методу pack.

root.mainloop()Для відображення галвного вікна використовується метод mainloop.

Page 54: Модулі Python

Імітатор кубикаfrom tkinter import *  from random import randintdef 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()

Page 55: Модулі Python
Page 56: Модулі Python

Кольори>>> from tkinter import *>>> t=Tk()>>> colorchooser.askcolor()

Page 57: Модулі Python
Page 58: Модулі Python

((222.8671875, 99.38671875, 201.78515625), '#de63c9')

червоний зелений синій

Код кольору у 16-річній системі

Page 59: Модулі Python

Tkinter кординати холста

Page 60: Модулі Python

from random import *from tkinter import *size = 500window = 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()

Page 61: Модулі Python
Page 62: Модулі Python

Реакція на події

<Button-1> <Right>

<Button-3>

<space>

<Left>

<Up>

<KeyPress-a>

<Down>

Події миші Події клавіатури

Клік лівою кнопкою

Клік правою кнопкою

Натиснута стрілка вправо

Натиснута стрілка вліво

Натиснута клавіша «пробіл»

Натиснута стрілка вверх

Натиснута стрілка вниз

Натиснута клавіша а Можна

поставити різні літери

Page 63: Модулі Python

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()

Page 64: Модулі Python
Page 65: Модулі Python

Створення свого модуля на 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

Page 66: Модулі Python

Створення свого модуля на Python

Тепер у цій же папці створимо інший файл, наприклад, main.py:import mymodule mymodule.hello() print(mymodule.fib(10))

Page 67: Модулі Python

Створення свого модуля на 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))

Page 68: Модулі Python