Програмна інженерія в системах управління. Лекції. Автор і лектор: Олександр Пупена
Основи 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