Програмна інженерія в системах управління. Лекції. Автор і лектор: Олександр Пупена
Основи Python Ч2
https://www.w3schools.com/python/default.asp
https://pythonguide.rozh2sch.org.ua/
Основи роботи з об’єктами
Python є об’єктно-орієнтованою мовою програмування. Майже все в Python є об’єктом зі своїми властивостями та методами. Клас схожий на конструктор об’єктів або «схему» для створення об’єктів. Клас вказує на поведінку, а об’єкт створений на базі цього класу веде себе згідно цієї поведінки та має свої дані.
class MyClass:
x = 5
p1 = MyClass()
print(p1.x)
Можна змінювати добавляти та видаляти властивості об’єкту, та видаляти весь об’єкт.
class MyClass:
x = 5
p1 = MyClass()
p1.x = 20
p1.y = 'New property'
print(p1.x, p1.y) # 20 New property
del p1.x # виадлити властивість
del p1 # виадлити об'єкт
Функція __init__() та параметр self
Усі класи мають функцію під назвою __init__(), яка завжди виконується, коли клас ініціюється. Тобто функція викликається автоматично щоразу, коли клас використовується для створення нового об’єкта. Використовуйте функцію __init__(), щоб призначити значення властивостям об’єкта або іншим операціям, які необхідно виконувати під час створення об’єкта:
class Person:
def __init__(self, name, age):
#створення властивстей
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
Параметр self є посиланням на поточний екземпляр класу та використовується для доступу до змінних, які належать класу. Його не обов’язково називати self, ви можете називати його як завгодно, але він має бути першим параметром будь-якої функції в класі:
Наслідування та функція super()
Наслідування дозволяє нам визначити клас, який успадковує всі методи та властивості від іншого класу. Батьківський клас — це клас, який успадковується, також називається базовим класом. Дочірній клас — це клас, який успадковує від іншого класу, який також називають похідним класом. Будь-який клас може бути батьківським класом, тому синтаксис такий же, як і для будь-якого іншого класу. Щоб створити клас, який успадковує функції від іншого класу, надішліть батьківський клас як параметр під час створення дочірнього класу. Python також має функцію super(), яка повертає батьківський клас.
class Person: #означення батьківскього класу
def __init__(self, fname, lname): # функція ініціалізації
self.firstname = fname
self.lastname = lname
def printname(self): # self - свій об'єкт
print(self.firstname, self.lastname)
class Student(Person): #означення дочірнього класу, наслідування від Person
def __init__(self, fname, lname, year): # переозначення своєї функції ініціалізації
super().__init__(fname, lname) # викликати батьківську (super) функцію ініціалізації
# Person.__init__(self, fname, lname) - альтернативний варіант
self.graduationyear = year #добавили нову валстивість
def welcome(self): #добавили новий метод
print("Welcome", self.firstname, self.lastname, "to the class of ", self.graduationyear)
x = Person("John", "Doe")
y = Student("Mike", "Olsen", 2000)
x.printname() #John Doe
y.printname() #Mike Olsen
y.welcome () #Welcome Mike Olsen to the class of 2000
У прикладі вище, клас Student наслідував усі властивості та методи класуPerson, та включив додаткову властивість graduationyear та метод welcome.
Якщо ви додаєте метод до дочірнього класу з тим же ім’ям, що й функція в батьківському класі, успадкування батьківського методу буде перевизначено, тобто замінено на свою версію.
Ітератори, методи iter, next
У Python ітератор — це об’єкт, який реалізує протокол ітератора, який складається з методів __iter__() і __next__(). Це дає можливість перебирати елементи в об’єкті з використанням методу next за умови ініціалізації ітератору методом iter. Також ітератори дають можливість використовувати оператори for.
Щоб створити об’єкт/клас як ітератор, вам потрібно реалізувати методи __iter__() і __next__() для вашого об’єкта.
Списки, кортежі, словники та множини є ітерованими об’єктами. Це ітеровані контейнери, з яких можна отримати ітератор. Усі ці об’єкти мають метод iter(), який використовується для отримання ітератора:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple) #отримати ітератор
print(next(myit))#apple
print(next(myit))#banana
print(next(myit))#cherry
У методі __iter__() ви можете виконувати операції (ініціалізацію тощо), але завжди повинні повертати сам об’єкт ітератора. Метод __next__() також дозволяє вам виконувати операції та повинен повертати наступний елемент у послідовності. Щоб ітерація не тривала вічно, иожна використати оператор StopIteration.
class MyNumbers:
def __iter__(self): #ініціювання ітератора
self.a = 1
return self
def __next__(self): #означення методу next
if self.a <= 3:
x = self.a
self.a += 1
return x
else:
raise StopIteration # завершення
myclass = MyNumbers()
myiter = iter(myclass) #інціювання ітератора
for x in myiter: #перебір елементів
print(x) # виведе 1 2 3
Модулі
Розглядайте модуль як бібліотеку коду, тобто файл, що містить набір функцій, які ви хочете включити у свою програму.
Власні модулі
Щоб створити модуль, просто збережіть потрібний код у файлі з розширенням .py.
def greeting(name):
print("Hello, " + name)
person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}
Тепер ми можемо використовувати щойно створений модуль за допомогою оператора import. У разі використання функції з модуля використовуйте синтаксис: ім’я_модуля.ім’я_функції. Аналогічно йде звернення до змінних модуля.
import mymodule
mymodule.greeting("Jonathan") # Hello, Jonathan
a = mymodule.person1["age"]
print(a) # 36
Ви можете створити псевдонім, коли імпортуєте модуль, використовуючи ключове слово as:
import mymodule as mx
a = mx.person1["age"]
print(a)
Вбудовані модулі Python
У Python є кілька вбудованих модулів, які ви можете імпортувати будь-коли. Наприклад, є вбудований модуль platform який можна використовувати для отримання різноманітної системної інформації (деталі).
import platform
x = platform.system()
print(x) # Windows
Опис стандартної бібліотеки доступний за посиланням.
Перегляд змінних та функцій модуля dir()
Для всіх модулів, а також тих, які ви створюєте самостійно можна використовувати функцію dir(), яка перераховує всіх імена функцій (або імен змінних) у модулі.
import mymodule
x = dir(mymodule)
print(x) # ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'greeting', 'person1']
Частковий імпорт
Ви можете імпортувати лише частини модуля за допомогою ключового слова from. Тоді в посиланні вже не треба вказувати ім’я модуля, а лише ім’я імпортованого елементу
from mymodule import person1 #імпортується тільки змінна person1
print (person1["age"])
Дата та час - модуль datetime
Модуль math
Модуль json
Регулярні вирази re
Менеджер пакунків PIP
PIP — це менеджер пакунків для встановлення, видалення модулів Python. Пакунки містить усі файли, необхідні для модуля. Працювати з pip у Windows можна через командний рядок безпосередньо з місця його розміщення або через опцію виклику pyhon. Нижче наведені обидва способи
Запуск з папки розміщення
Для запуску pip необхідно в командному рядку перейти до його розміщення, яке можна дізнатися, викликавши в командному рядку Windows таку команду:
py -c "import os, sys; print(os.path.dirname(sys.executable))"
Далі необхідно перейти в командному рядку на його розміщення, наприклад:
cd C:\Users\username\AppData\Local\Programs\Python\Python310\Scripts
Перевірка версії PIP:
pip --version
Робота через параметр -m
Альтернативним способом є використання параметру -m при виклику python, який виконує бібліотеку. Наприклад, перевірити версію можна наступним викликом:
py -m pip --version
Робота з pip
Для завантаження пакунків використовується команда install. Наприклад:
py -m pip install camelcase
Після цього можна імпортувати модуль
import camelcase
c = camelcase.CamelCase()
txt = "hello world"
print(c.hump(txt)) #Hello World
Так само можна оновити версію pip
py -m pip install --upgrade pip
Пакунки можна шукати на репозиторії
Видалення пакунків робиться через uninstall
py -m pip uninstall camelcase
Використовуйте команду list, щоб отримати список усіх пакетів, встановлених у вашій системі:
py -m pip list
Перевірити версію встановленого пакунку можна через опцію show:
py -m pip show numpy