Урок 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

Урок 18. Try Except

У Python блок try використовується для обробки виключень. Це дозволяє програмі продовжувати виконання, навіть якщо сталася помилка. Суть у тому, що ви намагаєтеся виконати певний код в блоці try, а якщо там виникає помилка, ви можете обробити її в блоці except. Приклад з відео:

#Блок "try" дозволяє перевірити блок коду на наявність помилок.
#Блок "except" дозволяє обробити помилку.
#print(varNum1)
try:
    print(varNum1)
    
except:
    print("Something went wrong.")

У Python ви можете мати кілька блоків except для одного блоку try. Це дозволяє обробляти різні типи виключень окремо. Кожен блок except може бути призначений для конкретного типу виключення або для групи типів. Приклад з відео:

#Ви можете визначити скільки завгодно блоків "винятків".
#якщо ви хочете виконати спеціальний блок коду для особливого типу помилки
#print(varNum1)
try:
    print(varNum1)
    
except NameError:
    print("Variable is not defined.")
    
except:
    print("Something went wrong.")

Ключове слово else у блоці try

Ключове слово else у блоці try в Python використовується для визначення коду, який буде виконано, якщо в блоці try не виникло жодних виключень. Це дозволяє відокремити код, що виконується при успішному завершенні, від коду обробки помилок. Приклад з відео:

#Ви можете використовувати ключове слово «else», 
#щоб визначити блок коду, який буде виконано
#якщо помилок не було
try:
    print("Python is a solid choice.")
    
except:
    print("Something went wrong.")
    
else:
    print("No exceptions were raised.")

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

Ключове слово finally в Python використовується в блоці try для визначення коду, який буде виконаний завжди, незалежно від того, чи виникло виключення в блоці try, чи ні. Це корисно для виконання дій, які потрібно зробити в будь-якому випадку, наприклад, закриття файлів, звільнення ресурсів або запису логів. Приклад з відео:

#Блок "finally", якщо його вказано, 
#буде виконано незалежно від того
#чи блок "try" викликає помилку чи ні.
try:
    print(varNum1)
    
except:
    print("Something went wrong.")
    
finally:
    print("End of try except.")

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

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

#Щоб створити (або підняти) виняток, 
#використовуйте ключове слово "raise".
#Ви можете визначити, яку помилку викликати, 
#і текст, який слід показати користувачеві.
quantityParam = 0

if quantityParam<1:
    raise Exception("Quantity can not be less than one.")

Можна визначити, яку саме помилку і за яких умов викликати. Наприклад, за допомогою функції type та ключового слова is ми можемо встановити умову для типу даних, порушення якої буде викликати помилку. Приклад з відео:

#Ви можете визначити, яку помилку викликати, і текст,
#який показати користувачеві.
varNum = "Text"

if not type(varNum) is int:
    raise TypeError("Invalid type. Only integers can be accepted.")

else:
    print(varNum)

Метод input() та блок try

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

#Python 3.6 використовує метод input().
#Python 2.7 використовує метод raw_input().
#Python припиняє виконання, коли справа доходить до функції input(),
#і продовжується, коли користувач вводить певні дані.
varNum1 = float(input("Enter number 1: "))
varNum2 = float(input("Enter number 2: "))

try:
    divisionResult=varNum1/varNum2
    print("{} divided by {} equals {}".format(varNum1,varNum2,divisionResult))
except ZeroDivisionError:
    print("You can not divide by zero.")

Використання методу input() разом із блоком try в Python дозволяє ефективно обробляти введення користувача і управляти потенційними помилками. Це особливо корисно, коли ви очікуєте, що користувач введе певний тип даних, наприклад, число. Приклад з відео:

#Python припиняє виконання, 
#коли доходить до функції input(),
#і продовжується, коли користувач 
#вводить певні дані.
#В цьому прикладі помістили 
#функції input() всередину
#блоку try.

try:
    varNum1 = float(input("Enter number 1: "))
    varNum2 = float(input("Enter number 2: "))
    divisionResult=varNum1/varNum2
    print("{} divided by {} equals {}".format(varNum1,varNum2,divisionResult))
except ZeroDivisionError:
    print("You can not divide by zero.")
    
except ValueError:
    print("Invalid data type. Numbers must be entered.")
Урок 18. Try Except

В цьому відео поговоримо про конструкцію Try Except.

Приклади на Github