Урок 23. Класи і об’єкти

Класи в Python — це шаблони для створення об’єктів, які дозволяють організувати дані і функціональність у програмі. Вони є основою об’єктно-орієнтованого програмування (ООП) і дозволяють створювати об’єкти, які мають власні атрибути (дані) і методи (функції). Приклад з відео:

#Python — це об'єктно-орієнтована 
#мова програмування.
#Майже все в Python є об’єктом 
#зі своїми властивостями та методами.
#Клас схожий на конструктор об’єктів 
#або «схему» для створення об’єктів.
#Щоб створити клас, використовуйте 
#ключове слово class
class MyFavouriteNumber:
    favouriteNumber = 5
    
#Now we can use the class named MyFavouriteNumber to create objects
favNum1 = MyFavouriteNumber()
print(favNum1)
print(type(favNum1))
print(favNum1.favouriteNumber)

Функція __init__()

Функція __init__() в Python — це спеціальний метод, який використовується як конструктор класу. Він викликається автоматично при створенні нового об’єкта цього класу і використовується для ініціалізації атрибутів об’єкта. Приклад з відео:

#Щоб зрозуміти значення класів, 
#ми повинні зрозуміти
#вбудовану функцію __init__().
#Усі класи мають функцію під 
#назвою __init__(), яка завжди
#виконується, коли клас ініціюється.
#Функція __init__() щоразу 
#викликається автоматично
#клас використовується для 
#створення нового об'єкта.
class MyFavouriteNumber:
    def __init__(self, favouriteNumber):
        self.favouriteNumber=favouriteNumber
        
favNum1 = MyFavouriteNumber(7)

print(favNum1.favouriteNumber)

favNum2 = MyFavouriteNumber(8)

print(favNum2.favouriteNumber)

Функція __str__()

Функція __str__() в Python — це спеціальний метод, який визначає, як об’єкт класу буде представлений у вигляді рядка. Він викликається, коли ви використовуєте функцію print() або функцію str() для об’єкта. Приклад з відео:

#Функція __str__() керує тим, 
#що має бути повернуто
#коли об'єкт класу представлено 
#у вигляді рядка.
#Якщо функцію __str__() не встановлено, 
#повертається рядкове представлення об'єкта 

class Person:
    def __init__(self, name, surname, age):
        self.name = name
        self.surname = surname
        self.age = age
        
person1 = Person("John", "Smith", 35)
print(person1)
print(person1.name, person1.surname, person1.age)
person2 = Person("Jenny", "Jackson", 30)
print(person2)
print(person2.name, person2.surname, person2.age)

Приклад рядкового представлення об’єкта за допомогою функції __str__() з відео:

#Рядкове представлення 
#об’єкта з функцією __str__().
class Person:
    def __init__(self, name, surname, age):
        self.name = name
        self.surname = surname
        self.age = age
        
    def __str__(self):
        return f"Name: {self.name} Surname: {self.surname} Age: {self.age}"

        
person1 = Person("John", "Smith", 35)
print(person1)
person2 = Person("Jenny", "Jackson", 30)
print(person2)

Методи об’єкта

Спрощено методи об’єкта в Python — це функції, які визначені всередині класу і можуть бути викликані на об’єктах цього класу. Вони дозволяють виконувати дії або маніпулювати атрибутами об’єкта. Приклад з відео:

#Об'єкти також можуть містити методи. 
#Методи в об'єктах є функціями
#які належать об'єкту.
#Параметр self - це посилання на 
#поточний екземпляр класу,
#та використовується для доступу до 
#змінних, які належать до класу.
class Person:
    def __init__(self, name, surname):
        self.name = name
        self.surname = surname
        
    def introduceFunc(self):
        print("Hello my name is {} {}".format(self.name, self.surname))
        
person1 = Person("John", "Smith")
person1.introduceFunc()
person2 = Person("Jenny", "Jackson")
person2.introduceFunc()

Параметр self

Параметр self в Python — це посилання на поточний об’єкт класу, з яким працює метод. Він використовується для доступу до атрибутів і методів цього об’єкта. Приклад з відео:

#Параметр self - це посилання на 
#поточний екземпляр класу,
#та використовується для доступу до 
#змінних, які належать до класу.
#Його не обов'язково називати self, 
#ви можете називати його як завгодно,
#але це має бути перший параметр 
#будь-якої функції в класі.
class Person:
    def __init__(refToCurrentInstance, name, surname):
        refToCurrentInstance.name = name
        refToCurrentInstance.surname = surname
        
    def introduceFunc(refToCurrentInstance):
        print("Hello my name is {} {}".format(refToCurrentInstance.name,
                                              refToCurrentInstance.surname))
        
person1  = Person("John", "Smith")
person1.introduceFunc()
person2 = Person("Jenny", "Jackson")
person2.introduceFunc()

Внесення змін в об’єкти класу

Змінювати об’єктіи класу можна за допомогою так званого dot syntax (синтаксису крапки). Dot syntax (синтаксис крапки) в Python — це спосіб доступу до атрибутів і методів об’єктів або класів за допомогою крапки. Це дозволяє вам працювати з властивостями та функціями, які належать до конкретного об’єкта або класу. Приклад з відео:

#Ви можете змінювати властивості об’єктів, 
#використовуючи крапковий синтаксис для доступу
class Person:
    def __init__(self, name, surname, age):
        self.name =  name
        self.surname =  surname
        self.age = age
        
    def introduceFunc(self):
        print("Hello my name is {} {}".format(self.name, self.surname))
        print("I'm {} old".format(self.age))
        

person1 = Person("John", "Smith", 35)
person1.introduceFunc()
person1.name = "James"
person1.age = 33
person1.introduceFunc()
del person1.age
#person1.introduceFunc()
del person1
#print(person1)
Урок 23. Класи та об’єкти

В цьому відео поговоримо про:
00:06 Classes
03:43 init() Function
09:39 str() Function
18:30 Object Methods
22:35 self Parameter
27:14 Modify Objects

Приклади на Github

Урок 22. Файли

Python підтримує різноманітні типи файлів. Файли можна розділити на дві великі групи:

  • Текстові файли – файли, які зберігають інформацію у текстовому форматі, напр. txt, html, csv тощо.
  • Двійкові файли – зображення, аудіо, відео тощо.

Робота з файлами може відрізнятися в залежності від типу файлу.

Послідовність роботи з файлами:

  1. Використовуйте метод open(), щоб відкрити файл
  2. Використовуйте метод read() для читання файлу або метод write() для запису у файл.
  3. Використовуйте метод close(), щоб закрити файл.

Для початку роботи з файлом скористайтеся методом open(), щоб відкрити його: open(file, mode). Перший параметр – це шлях до файлу. Він може бути абсолютним або відносним.

Приклад абсолютного шляху до файлу – C://directoryname/filename.txtC://directoryname/filename.txt

Відносний шлях до файлу залежить від місця поточного скрипта Python. Приклад відносного шляху: directoryname/filename.txtdirectoryname/filename.txt

Другим аргументом є режим. Є чотири режими:

  • r (Read/Читання). Відкриває файл для читання. Якщо файл не знайдено, генерується FileNotFoundError.
  • w (Write/Написати). Відкриває файл для запису в нього. Якщо файл відсутній, він створений. Якщо файл присутній, він створюється знову, а всі дані в ньому стираються.
  • a(Append/Додати). Відкриває файл для внесення змін без стирання попередніх даних. Якщо файл відсутній, він створюється. Якщо файл присутній, нова інформація додається в кінці файлу.
  • x (Create/Створити). Створює файл, якщо файл існує, повертає помилку.

Крім того, ви можете вказати, чи потрібно обробляти файл у двійковому чи текстовому режимі:

  • t – text – значення за замовчуванням. Текстовий режим
  • b – binary – Двійковий режим (наприклад, зображення)

Функція open() в Python використовується для відкриття файлів. Вона повертає об’єкт файлу, з яким можна працювати. Приклад з відео:

#відкрити файл у режимі «запису».
file1 = open("file.txt", "w")
#закрити файл
file1.close()

Під час роботи з файлами можуть виникати помилки, для обробки яких можна використовувати блоки try except. Приклад з відео:

#Під час роботи з файлами можливі винятки.
#Ви можете використовувати блоки 
#"try...except" для вирішення таких проблем.
try:
    file2 = open("file2.txt", "w")
    try:
        file2.write("Python is a solid choice.")
    except Exception as exInner:
        print(exInner)
    finally:
        file2.close()
except Exception as exOuter:
    print(exOuter)

Вираз with в Python

Вираз with в Python використовується для управління контекстом, що дозволяє автоматично обробляти ресурси, такі як файли або з’єднання. Він забезпечує безпечне відкриття і закриття ресурсів, навіть якщо виникає помилка.

Основні переваги використання with:

  • Автоматичне закриття ресурсів: Наприклад, при відкритті файлу, with автоматично закриває його після виходу з блоку, навіть якщо сталася помилка.
  • Читабельність: Код стає більш зрозумілим і компактним.

Приклад з відео:

#Можна використовувати вираз "with". 
#Він закриває файли в будь-якому разі.
# with open(filename, mode) as file_obj:
#    commands
#with вираз визначає змінну file_obj для відкритого файлу.
with open("file3.txt", "w") as fileInUse:
    fileInUse.write("Python is a solid choice. File3.")

Метод write()

Метод write() в Python використовується для запису певного тексту у файл. Приклад з відео:

#створити новий файл і вписати в нього текст.
with open("file4.txt", "w") as fileInUse:
    fileInUse.write("Java is a solid choice. File4")
    
with open("file4.txt", "w") as fileInUse:
    fileInUse.write("Python is a solid choice. File4.")
    
with open("file4.txt", "a") as fileInUse:
    fileInUse.write("\nJava is a solid choice. File4")
    
with open("file4.txt", "a") as fileInUse:
    print("\nC# is a solid choice. File4", file=fileInUse)

Зчитування файлу

Зчитування файлу в Python зазвичай здійснюється за допомогою методу open() у поєднанні з методами для читання вмісту. Основні способи зчитування:

  • read() – Зчитує весь вміст файлу як один рядок.
  • readline() – Зчитує один рядок за раз.
  • readlines() – Зчитує всі рядки та повертає їх у вигляді списку.

Приклад з відео:

#ви можете прочитати текстовий файл за допомогою cycle for
with open("file4.txt", "r") as fileInUse:
    for line in fileInUse:
        print(line, end="")#readline is used behind the scene

#Явне використання readline
print("\nExplicit use of readline\n")        
with open("file4.txt", "r") as fileInUse:
    str1=fileInUse.readline()
    print(str1, end="")
    str2=fileInUse.readline()
    print(str2, end="")
    str3=fileInUse.readline()
    print(str3, end="")

Приклад з відео із поєднанням readline() з циклом while та застосуванням методу read():

#readline() у поєднанні з циклом while
with open("file4.txt", "r") as fileInUse:
    fileLine = fileInUse.readline()
    while fileLine:
        print(fileLine, end="")
        fileLine = fileInUse.readline()
print()
#для невеликих файлів можна 
#використовувати метод read().
with open("file4.txt", "r") as fileInUse:
    fileContent = fileInUse.read()
    print(fileContent)

Приклад із застосуванням readlines() та додаванням encoding параметра з відео:

#Метод readlines() можна використовувати 
#для читання всіх рядків файлу
#вони будуть збережені як список
with open("file4.txt", "r") as fileInUse:
    fileContent = fileInUse.readlines()
    print(fileContent)
    
#якщо є проблеми з кодуванням, 
#можна скористатися параметром кодування
with open("file4.txt", encoding="utf8") as fileInUse:
    fileContent = fileInUse.read()
    print(fileContent)

Файли csv

Робота з CSV-файлами в Python зазвичай здійснюється за допомогою стандартної бібліотеки csv, яка забезпечує прості інструменти для читання та запису CSV-даних. Приклад з відео:

#У Python є модуль csv. 
#Цей модуль спрощує роботу з файлами csv.
import csv

fileName = "file8.csv"

customers = [
    ["Solverson", 35],
    ["Jackson", 29]
    ]
with open(fileName, "w", newline="") as fileInUse:
    writer = csv.writer(fileInUse)
    writer.writerows(customers)
    
with open(fileName, "a", newline="") as fileInUse:
    customer = ["Smith", 25]
    writer = csv.writer(fileInUse)
    writer.writerow(customer)
    
with open(fileName, "r", newline="") as fileInUse:
    reader=csv.reader(fileInUse)
    for i in reader:
        print("Name: {}, Age: {}".format(i[0], i[1]))

Модуль OS

В Python є вбудований модуль os.

Цей модуль містить низку корисних функцій:

  • mkdir() – створює нову папку
  • rmdir() – видаляє папку
  • rename() – перейменовує файл
  • remove() – видаляє файл

Модуль os в Python — це стандартна бібліотека, яка надає функції для взаємодії з операційною системою. Він дозволяє виконувати різні операції, такі як робота з файлами і каталогами, отримання інформації про систему, а також управління середовищем. Приклад з відео:

import os

#використання методу mkdir
try:
    os.mkdir("dir1")
    with open("dir1/file.txt","w") as fileInUse:
        fileInUse.write("Python is a solid choice")
    with open("dir1/file.txt", "r") as fileInUse:
        content = fileInUse.read()
        print(content)
        
except Exception as e:
    print(e)

Приклад з перейменуванням файлу з відео:

import os

os.rename("dir1/file.txt", "dir1/fileRenamed.txt")
with open("dir1/fileRenamed.txt", "r") as fileInUse:
    content = fileInUse.read()
    print(content)

Приклад з видаленням файлу та папки з відео:

import os

#delete folder dir1
os.remove("dir1/fileRenamed.txt")
os.rmdir("dir1")
Урок 22. Файли

В цьому відео поговоримо про:
00:07 Files
12:22 write() – “w” and “a”
15:54 Reading file
27:23 csv files
34:46 OS Module

Приклади на Github

Урок 21. Регулярні вирази

Функція findall()

У Python функція findall() належить до модуля re, який використовується для роботи з регулярними виразами. Ця функція шукає всі неперервні входження шаблону в рядку і повертає їх у вигляді списку. Приклад з відео:

#"RegEx", або регулярний вираз, це 
#послідовність символів, яка утворює
#шаблон пошуку.
#RegEx можна використовувати, щоб перевірити, 
#чи містить рядок вказаний шаблон пошуку.
#Python має вбудований пакет під назвою re, 
#з яким можна працювати
#Імпортуйте модуль re.
#Функція findall() повертає список із усіма збігами.
import re

str1 = "It was raining outside."
mathcList = re.findall("rain", str1)
print(str1)
print(mathcList)

Приклад з findall(), якщо не було збігів:

#Якщо збігів не знайдено, 
#повертається порожній список
import re

str1 = "It was raining outside."
matchList = re.findall("snowing",str1)
print(str1)
print(matchList)
СимволОписПриклад
[]Набір символів“[a-m]”
\Сигналізує спеціальну послідовність (також може використовуватися для екранування спеціальних символів)“\d”
.Будь-який символ (крім символу нового рядка)“ra..g”
^Починається з“^It”
$Закінчується на“side.$”
*Нуль або більше випадків“ra.*g”
+Один або кілька випадків“ra.+g”
?Нуль або один раз“ra.?g”
{}Точно вказана кількість повторень“ra.{4}g”
|Або або“raining|snowing”
Метасимволи

Приклад із метсимволами з відео:

import re

str1 = "15th December. It was raining outside."
#Знайти всі символи нижнього регістру в 
#алфавітному порядку між «a» і «y»:
searchResult = re.findall("[a-y]", str1)
print("All lower case characters")
print(searchResult)
#Знайти всі цифрові символи:
searchResult2 = re.findall("\d", str1)
print(searchResult2)
#Пошук послідовності, яка починається з "ra", а потім чотири (будь-які)
#символи та "g":
searchResult3 = re.findall("ra....g", str1)
print(searchResult3)

Ще приклад із застосуванням метсимволів з відео:

import re

str1 = "It was raining outside."
#Перевірте, чи рядок починається з "It":
searchResult = re.findall("^It", str1)
print(searchResult)
#Перевірте, чи закінчується рядок на 'side.':
searchResult2 = re.findall("side.$", str1)
print(searchResult2)
#Пошук послідовності, яка починається з "ra", після чого йде 0 
#або більше символів і "g":
searchResult3 = re.findall("ra.*g", str1)
print(searchResult3)

Ще один приклад з метасимволами з відео:

import re
str1 = "It was raining outside."
#Пошук послідовності, яка починається 
#з "ra", за якою йде 1 або більше
# (будь-яких) символів та "g"
searchResult = re.findall("ra.+g", str1)
print(searchResult)
#Пошук послідовності, яка починається 
#з "ra", після чого йде 0 або 1
#символ і "g":
searchResult2 = re.findall("ra.?g", str1)
print(searchResult2)
#Пошук послідовності, яка починається 
#з "ra", з точним дотриманням
#4 символи та "g"
searchResult3 = re.findall("ra.{4}g",str1)
print(searchResult3)
#Перевірте, чи рядок містить текст "raining" чи "snowing"
searchResult4 = re.findall("raining|snowing",str1)
print(searchResult4)

Також findall() можна застосовувати зі спеціальними послідовностями.

СимволОписПриклад
\AПовертає збіг, якщо вказані символи знаходяться на початку рядка“\AThe”
\bПовертає збіг, якщо вказані символи знаходяться на початку або в кінці слова (“r” на початку впевнюється, що рядок розглядається як “необроблений рядок”)r”\bain”
r”ain\b”
\BПовертає збіг, якщо вказані символи присутні, але НЕ на початку (чи в кінці) слова (“r” на початку гарантує, що рядок розглядається як “необроблений рядок”)r”\Bain”
r”ain\B”
\dПовертає збіг, якщо рядок містить цифри (числа від 0 до 9)“\d”
\DПовертає збіг, якщо рядок НЕ містить цифр“\D”
\sПовертає збіг, якщо рядок містить пробіл“\s”
\SПовертає збіг, якщо рядок НЕ містить пробілу“\S”
\wПовертає збіг, якщо рядок містить будь-які символи слова (символи від a до Z, цифри від 0 до 9 і символ підкреслення _)“\w”
\WПовертає збіг, якщо рядок НЕ містить символів слів“\W”
\ZПовертає збіг, якщо вказані символи знаходяться в кінці рядка“Spain\Z”
Спеціальні послідовності

Приклад зі спеціальними символами з відео:

import re
str1 = "25th December. It was raining outside."
#Перевірте, чи починається рядок з "It"
searchResult = re.findall("\AIt", str1)
print(searchResult)
#Перевірте, чи є слово «rain» на початку слова
searchResult2 = re.findall(r"\brain", str1)
print(searchResult2)
#Перевірте, чи є "ing" у кінці слова
searchResult3 = re.findall(r"ing\b", str1)
print(searchResult3)
#Перевірте, чи присутній "ini", але НЕ на початку слова
searchResult4 = re.findall(r"\Bini", str1)
print(searchResult4)
#Перевірте, чи містить рядок якісь цифри (від 0 до 9)
searchResult5 = re.findall("\d", str1)
print(searchResult5)

Ще один приклад з відео зі спецсимволами:

import re
str1 = "25th December. It was raining outside."
#Повертати збіг для кожного символу без цифр
print("Return a match at every no-digit character")
searchResult = re.findall("\D", str1)
print(searchResult)
#Повертати збіг для кожного пробілу
print("Return a match at every white-space character")
searchResult2 = re.findall("\s", str1)
print(searchResult2)
#Повертати збіг для кожного НЕ пробілу
print("Return a match at every NON white-space character")
searchResult3 = re.findall("\S", str1)
print(searchResult3)
#Повертати збіг для кожного символу слова 
#(символи від a до Z, цифри від 0 до 9 і символ підкреслення _)"
print("Return a match at every word character (characters from a to Z, digits from 0-9, and the underscore _ character)")
searchResult4 = re.findall("\w", str1)
print(searchResult4)
#Повертати збіг для кожного НЕ символу слова 
#(символи НЕ між a і Z. Наприклад \"!\", \"?\" пробіл тощо)
print("Return a match at every NON word character (characters NOT between a and Z. Like \"!\", \"?\" white-space etc.)")
searchResult5 = re.findall("\W", str1)
print(searchResult5)
#Перевірте, чи закінчується рядок на \"outside.\
print("Check if the string ends with \"outside.\"")
searchResult6 = re.findall("outside.\Z", str1)
print(searchResult6)

З findall() також часто використовуються sets або набори символів.

SetОпис
[arn]Повертає збіг, де присутній один із указаних символів (a, r або n).
[a-n]Повертає збіг для будь-якого символу нижнього регістру в алфавітному порядку від a до n
[^arn]Повертає збіг для будь-якого символу, КРІМ a, r і n
[0123]Повертає збіг, якщо присутня будь-яка з указаних цифр (0, 1, 2 або 3).
[0-9]Повертає збіг для будь-якої цифри від 0 до 9
[0-5][0-9]Повертає збіг для будь-яких двозначних чисел від 00 до 59
[a-zA-Z]Повертає збіг для будь-якого символу в алфавітному порядку від a до z, нижнього АБО верхнього регістру
[+]У наборах +, *, ., |, (), $,{} не мають спеціального значення, тому [+] означає: повертає збіг для будь-якого символу + у рядку
Набори символів

Приклад з наборами символів з відео:

import re
str1 = "25th December. It was raining outside."
#Перевірте, чи містить рядок символи j, i або w
searchResult = re.findall("[jiw]", str1)
print(searchResult)
#Перевірте, чи містить рядок символи між j і w
searchResult2 = re.findall("[j-w]", str1)
print(searchResult2)
#Перевірте, чи містить рядок інші символи, крім j, i чи w
searchResult3 = re.findall("[^jiw]", str1)
print(searchResult3)
#Перевірте, чи містить рядок 1, 2, 3, 4 або 5 цифр
searchResult4 = re.findall("[12345]", str1)
print(searchResult4)

Ще один приклад з відео з наборами символів:

import re
str1 = "25th December. It was raining outside.+"
#Перевірте, чи містить рядок цифри від 0 до 9
searchResult = re.findall("[0-9]", str1)
print(searchResult)
#Перевірте, чи містить рядок двозначні числа від 00 до 99
searchResult2 = re.findall("[0-9][0-9]", str1)
print(searchResult2)
#Перевірте, чи містить рядок символи 
#від a до w нижнього регістру,
#і від A до Y у верхньому регістрі
searchResult3 = re.findall("[a-wA-Y]", str1)
print(searchResult3)
#Перевірте, чи містить рядок символи +
searchResult4 = re.findall("[+]", str1)
print(searchResult4)

Функція search()

Функція search() у Python також належить до модуля re, який використовується для роботи з регулярними виразами. Ця функція шукає перше входження шаблону в рядку і повертає об’єкт-результат, якщо знайдено, або None, якщо входження не виявлено. Приклад з відео:

#Функція search() шукає збіг у рядку та повертає
#Match об'єкт, якщо є збіг.
#Якщо є більше одного збігу, лише перший збіг
#повернеться.
import re

str1 = "It was raining outside."
match1 = re.search("\s", str1)
print(match1)
print("Position of space: ", match1.start())

Ще один приклад із застосуванням функції search() з відео:

#Якщо збігів не знайдено, 
#повертається значення None
import re

str1 = "It was raining outside."
match1 = re.search("snowing", str1)
print(match1)

Функція split()

Функція split() у Python використовується для розділення рядка на список підрядків на основі роздільника. Приклад з відео:

#Функція split() повертає список, 
#де було розділено рядок
#по кожному збігу.
import re

str1 = "It was raining outside."
splitedList = re.split("\s", str1)
print(str1)
print(splitedList)
print(str1)

Ще один приклад із застосуванням функції split():

#Ви можете контролювати кількість 
#повторень, вказавши
#параметр maxsplit
import re

str1 = "It was raining outside."
splitedList = re.split("\s", str1, 1)
print(str1)
print(splitedList)

Функція sub()

Функція sub() у Python належить до модуля re і використовується для заміни частин рядка, які відповідають заданому регулярному виразу, на інший рядок. Приклад з відео:

#Функція sub() замінює збіги 
#текстом за вашим вибором
import re

str1 = "It was raining outside."
substitutedStr1 = re.sub("\s", "-", str1)

print(str1)
print(substitutedStr1)

Ще один приклад із sub() з відео:

#Ви можете контролювати кількість замін, 
#вказавши параметр count
import re

str1 = "It was raining outside."
substitutedStr1 = re.sub("\s", "-", str1, 1)

print(str1)
print(substitutedStr1)

Match object

Match object (об’єкт відповідності) у Python є результатом виконання функцій модуля re, таких, наприклад, як search() та findall(). Цей об’єкт надає інформацію про знайдене входження регулярного виразу в рядок. Він містить різні методи та атрибути, які дозволяють отримати деталі про знайдене входження.  Приклад з відео:

#Об’єкт відповідності – це об’єкт, 
#що містить інформацію про пошук
#і результат.
#Якщо збігу немає, замість нього 
#буде повернено значення None
import re

str1 = "It was raining outside."
searchResult = re.search("rain", str1)
print(searchResult)

Приклад  з  Match object та span():

#.span() повертає кортеж, 
#що містить початкову та кінцеву позиції
#збігу.
#Регулярний вираз шукає будь-які слова, 
#які починаються з малої літери "r"
import re

str1 = "It was raining outside."
searchResult = re.search(r"\br\w+", str1)
print(searchResult)
print(searchResult.span())

Приклад  з  Match object та group():

#.group() повертає частину 
#рядка, де був збіг
#Регулярний вираз шукає будь-які 
#слова, які починаються з малої літери "r"
import re

str1 = "It was raining outside."
searchResult = re.search(r"\br\w+", str1)
print(searchResult)
print(searchResult.group())

Приклад  з  Match object та string:

#.string повертає рядок, переданий у функцію
#Регулярний вираз шукає будь-які слова, 
#які починаються з малої літери "r"
import re

str1 = "It was raining outside."
searchResult = re.search(r"\br\w+", str1)
print(searchResult)
print(searchResult.string)
Урок 21. Регулярні вирази

В цьому відео поговоримо про:
00:00:08 findall() Function
00:05:20 Metacharacters – метасимволи
00:20:07 Special Sequences – Спеціальні послідовності
00:43:41 Sets – набори у регулярних виразах
00:57:07 search() Function
01:01:44 split()
01:06:40 sub()
01:09:46 Match object

Приклади на Github

Урок 20. Модулі DateTime та Math

Дати в Python

Модуль datetime у Python — це стандартний модуль, який надає класи для роботи з датами та часом. Приклад з відео:

#Дата в Python не є окремим типом даних, 
#але ми можемо імпортувати
#модуль під назвою datetime для роботи 
#з датами як об’єктами.
import datetime

todayVar = datetime.datetime.now()

print(todayVar)

Створення об’єктів дат

Щоб створити дату за допомогою модуля datetime у Python, ви можете використовувати клас date або клас datetime. Приклад з відео:

#Щоб створити дату, ми можемо використати 
#клас datetime() (конструктор)
#модуля datetime.
#Клас datetime() вимагає трьох параметрів 
#для створення дати:
#рік, місяць, день.
#Клас datetime() також приймає параметри 
#для часу та часового поясу
#(година, хвилина, секунда, мікросекунда, tzone), 
#але вони необов’язкові,
#та має значення за замовчуванням 0 
#(немає для часового поясу).
import datetime

date1 = datetime.datetime(2020, 12, 25, 9, 45, 50, 10)

print(date1)

Метод strftime()

Метод strftime() у Python використовується для форматування об’єктів дати та часу в рядки. Він є частиною класів date, time та datetime з модуля datetime. За допомогою цього методу ви можете вказати, як саме ви хочете відобразити дату та час, використовуючи спеціальні формати.

ДирективаОписПриклад
%aWeekday, short versionWed
%AWeekday, full versionWednesday
%wWeekday as a number 0-6, 0 is Sunday3
%dDay of month 01-3131
%bMonth name, short versionDec
%BMonth name, full versionDecember
%mMonth as a number 01-1212
%yYear, short version, without century18
%YYear, full version2018
%HHour 00-2317
%IHour 00-1205
%pAM/PMPM
%MMinute 00-5941
%SSecond 00-5908
%fMicrosecond 000000-999999548513
%zUTC offset+0100
%ZTimezoneCST
%jDay number of year 001-366365
%UWeek number of year, Sunday as the first day of week, 00-5352
%WWeek number of year, Monday as the first day of week, 00-5352
%cLocal version of date and timeMon Dec 31 17:41:00 2018
%CCentury20
%xLocal version of date12/31/18
%XLocal version of time17:41:00
%%A % character%
%GISO 8601 year2018
%uISO 8601 weekday (1-7)1
%VISO 8601 weeknumber (01-53)01
Метод strftime() та варіанти виведення дат

Приклад застосування strftime() з відео:

#Об'єкт datetime має метод для 
#форматування об'єктів дати
#у читабельні рядки.
#Метод називається strftime() і 
#приймає один параметр, формат,
#щоб вказати формат повернутого рядка
import datetime

date1 = datetime.datetime(2020,12,25,9,50,55,10)

print(date1.year)
print(date1.month)
#виведе повну назву дня тижня
print(date1.strftime("%A"))
#виведе день тижня як номер 0-6, 0 - Sunday (Неділя)
print(date1.strftime("%w"))
#виведе назву місяця, e.g. December
print(date1.strftime("%B"))
#виведе години 00-12
print(date1.strftime("%I"))
#ISO 8601 weekday (день тижня)
print(date1.strftime("%u"))

Функції min() and max()

Функції min() і max() у Python використовуються для знаходження найменшого та найбільшого значення в ітерабельних об’єктах (таких як списки, кортежі, множини) або серед кількох аргументів. Приклад з відео:

#Python має набір вбудованих математичних 
#функцій, включаючи розширений
#математичний модуль, що дозволяє виконувати 
#математичні завдання над числами.
#Функції min() і max() можна використовувати, 
#щоб знайти найменше або
#найбільше значення в ітерації
numList1 = [10,5,25,15,35]
minValue = min(numList1)
maxValue = max(numList1)
maxValue2 = max(5,25,10)
print(minValue)
print(maxValue)
print(maxValue2)

Функції abs() and pow()

Функція abs() використовується для знаходження абсолютного значення числа. Абсолютне значення — це ненегативне значення числа без врахування його знака.

Функція pow() використовується для піднесення числа до певного ступеня.

Приклад з відео:

#Функція abs() повертає абсолютне 
#значення вказаного числа.
#Функція pow(x, y) повертає 
#значення x у ступені y.

num1 = -3.85
num2 = abs(num1)
num3 = pow(3,5)

print(num1)
print(num2)
print(num3)

Модуль math

Модуль math у Python є стандартним модулем, який надає доступ до багатьох математичних функцій і констант. Це корисний інструмент для виконання різноманітних математичних обчислень. Приклад з відео:

#Python також має вбудований модуль під назвою 
#math, який має розширений
#список математичних функцій.
#Коли ви імпортували математичний модуль, 
#ви можете почати використовувати методи
#і константи модуля.
#Метод math.sqrt() повертає 
#квадратний корінь із числа
#Метод math.ceil() округлює число в 
#більшу сторону до найближчого цілого,
#і метод math.floor() округляє число до свого
#найближчого цілого в меншу сторону 
#і повертає результат
import math

num1 = math.sqrt(225)
num2 = math.ceil(3.3)
num3 = math.floor(3.3)
print(num1)
print(num2)
print(num3)

Ще кілька прикладів з факторіалом, числами PI та Ейлера з відео:

#Константа math.pi повертає значення PI (3.14...)
#math.pi повертає PI (3,1415...)
#math.e повертає число Ейлера (2,7182...)
import math

#факторіал 5 означає 1*2*3*4*5
factorialOf5 = math.factorial(5)
print(factorialOf5)
print(math.pi)
print(math.e)
Урок 20. Модулі DateTime та Math

В цьому відео поговоримо про:
00:12 Python Dates
01:58 Creating Date Objects
03:41 strftime() Method and date output
13:49 min() and max() functions
16:23 abs() and pow() functions
18:06 Math module

Приклади на Github

Урок 19. Зони видимості та модулі

Local Scope (локальна зона чи область видимості)

У Python “local scope” (локальна область видимості) відноситься до контексту, в якому змінні визначені всередині функції або блоку коду. Це означає, що змінні, оголошені всередині функції, доступні тільки в цій функції і не можуть бути використані за її межами. Приклад з відео:

#Змінна доступна лише в регіоні, де вона створена.
#Це називається областю видимості.
#Змінна, створена всередині функції, 
#належить до локальної області
#цієї функції та може використовуватися 
#лише всередині цієї функції.
def displayCar():
    car = "Dodge"
    print(car)
    
displayCar()
#print(car)

Приклад з функцією всередині функції:

#змінна, яка знаходиться всередині функції, 
#недоступна ззовні функції, але 
#вона доступна для будь-якої функції 
#всередині функції
def displayCar():
    car = "Dodge"
    def printCar():
        print(car)
    printCar()
    
displayCar()
#print(car)

Global Scope (глобальна область чи зона видимості)

У Python “global scope” (глобальна область видимості) відноситься до контексту, в якому змінні визначені на верхньому рівні програми, тобто поза всіма функціями або класами. Ці змінні доступні з будь-якої частини коду, включаючи всередині функцій, якщо не перекриваються локальними змінними з однаковими іменами. Приклад з відео:

#Змінна, створена в основному тексті 
#коду Python, є глобальною змінною
#і належить до глобальної області видимості.
#Глобальні змінні доступні з будь-якої області, 
#глобальної та локальної.
car = "Dodge"

def printCar():
    print(car)
    
printCar()
print(car)

Назви змінних та області видимості

У Python змінні можуть мати різні області видимості, які визначають, де ці змінні доступні в коді. Приклад з відео:

#Якщо ви працюєте з однаковою назвою 
#змінної всередині та поза функцією,
#Python розглядатиме їх як дві окремі змінні
car = "Dodge"

def displayCar():
    car = "Lincoln"
    print(car)
    
displayCar()
print(car)

Ключове слово global

Ключове слово global в Python використовується для оголошення, що змінна є глобальною, що дозволяє змінювати її значення всередині функції. За замовчуванням, якщо ви оголошуєте змінну всередині функції, Python вважає її локальною. Використання global дозволяє уникнути конфліктів між локальними та глобальними змінними. Приклад з відео:

#Ключове слово "global" робить 
#змінну глобальною.
car = "Dodge"

def displayCar():
    global car
    car = "Lincoln"
    print(car)

print(car)    
displayCar()
print(car)

Імпортування модулів

Імпортування модулів в Python дозволяє використовувати функції, класи та змінні, які визначені в інших файлах (модулях). Це важлива частина організації коду, оскільки допомагає зберігати код чистим. В прикладі з відео ми створили модуль moduleDisplayCar, який має лише одну функцію displayCar, імпортуємо цей модуль та надаємо йому псевдонім mdc:

#Ми можемо використовувати модуль, 
#який ми щойно створили, 
#використовуючи оператор «import».
import moduleDisplayCar as mdc

mdc.displayCar()

Код модуля moduleDisplayCar:

#Вважайте модуль таким же, як бібліотека коду.
#Файл, що містить набір функцій, 
#які ви хочете включити у свою програму.

def displayCar():
    car = "Dodge"
    print(car)

Вбудовані модулі

Вбудовані модулі в Python — це модулі, які постачаються разом із стандартною бібліотекою мови. Вони надають готові функції та класи, які можна використовувати без необхідності їх встановлення або імпортування з зовнішніх джерел. Ці модулі охоплюють різноманітні задачі, такі як робота з рядками, обробка часу, математичні операції, робота з файлами та багато іншого. Приклад з відео:

#Вбудовані модулі в Python
import platform

platformInfo = platform.system()
print(platformInfo)

platformFunctionsList = dir(platform)
for i in platformFunctionsList:
    print(i)

Імпортування частини модуля

В Python можна імпортувати частини модуля, використовуючи конструкцію from … import …. Це дозволяє вам вибрати конкретні функції, класи або змінні з модуля, що може зменшити використання пам’яті і підвищити читабельність коду. Приклад з відео:

#імпортуємо окрему функцію 
#з модуля moduleCalc
from moduleCalc import divideNumbers

divideNumbers(10,0)

Файл moduleCalc з якого імпортуємо одну функцію divideNumbers:

#модуль з кількома арифметичними функціями
def addNumbers(num1, num2):
    return num1 + num2

def substractNumbers(num1, num2):
    return num1 - num2

def multiplyNumbers(num1, num2):
    return num1*num2

def divideNumbers(num1, num2):
    try:
        return num1/num2
    except ZeroDivisionError:
        print("You can't divide by zero.")
Урок 19. Зони видимості та модулі

В цьому відео поговоримо про:
00:15 Local Scope – Локальна зона видимості
04:18 Function inside Function – Функція всередині функції
09:45 Global Scope – Глобальна зона видимості
12:12 Names of variables and scope – Імена змінних і зона видимості
14:25 Global keyword – Ключове слово global
18:49 Import modules – Імпортування модулів
21:33 Built-in Modules – Вбудовані модулі
24:22 Import part of module – Імпортування частини модуля

Приклади на Github