Вивчаючи програмування та читаючи деякі ресурси, ви б стикалися з цим словом «абстракція», що просто означає зменшити і повторно використати код якомога більше.
Функції та модулі полегшують абстрагування. Ви створюєте функції, коли хочете щось робити повторно у файлі.
Модулі з’являються, коли ви хочете повторно використовувати групу функцій у різних вихідних файлах. Модулі також корисні для гарної структуризації програми.
- Використання стандартних бібліотек та інших сторонніх модулів
- Структурування програми
Використання стандартних бібліотек
Приклад: Ви можете детально прочитати про методи / функції всіх стандартних бібліотек в офіційних документах Python.
import time for i in range(100): time.sleep(1) # Waits for 1 second and then executes the next command print(str(i) + ' seconds have passed') # prints the number of seconds passed after the program was started

Запустити код
# To calculate the execution time of a part of program import time start = time.time() # code here end = time.time() print('Execution time:' , end-start)

Запустити код
# Using math Module import math print(math.sqrt(100)) # prints 10

Запустити код
Використання сторонніх модулів
Сторонні модулі не постачаються в комплекті з python, але ми повинні встановлювати його зовні, використовуючи менеджери пакетів, як pip
іeasy install
# To make http requests import requests rq = requests.get(target_url) print(rq.status_code)
Дізнайтеся більше про модуль запитів python тут
Структурувати програми
Ми хочемо створити програму, яка має різні функції щодо простих чисел. Тож давайте почнемо. Ми визначимо всі функції вprime_functions.py
# prime_functions.py from math import ceil, sqrt def isPrime(a): if a == 2: return True elif a % 2 == 0: return False else: for i in range(3,ceil(sqrt(a)) + 1,2): if a % i == 0: return False return True def print_n_primes(a): i = 0 m = 2 while True: if isPrime(m) ==True: print(m) i += 1 m += 1 if i == a: break
Тепер ми хочемо використовувати функції, які ми щойно створили, prime_functions.py
тому створюємо новий файл playground.py
для використання цих функцій.
Зверніть увагу, що ця програма занадто проста, щоб створити два окремі файли, вона лише для демонстрації. Але коли є великі складні програми, створення різних файлів дійсно корисно.
# playground.py import prime_functions print(prime_functions.isPrime(29)) # returns True
Сортування імпорту
Передовою практикою є сортування import
модулів за трьома групами - імпорт стандартних бібліотек, пов’язаний з ними сторонній імпорт та місцевий імпорт. У межах кожної групи розумно сортувати за алфавітом за назвою модуля. Ви можете знайти більше інформації в PEP8.
Однією з найважливіших речей для мови Python є читабельність, а модулі сортування за алфавітом швидше читаються та шукаються. Також легше перевірити, чи щось імпортується, та уникнути дублювання імпорту.
З X імпорту Y: приклад
Ось приклад проблеми:
>>> from math import ceil, sqrt >>> # here it would be >>> sqrt(36) <<< 6

Запустити код
Або ми могли б використати цей:
>>> import math >>> # here it would be >>> math.sqrt(36) <<< 6

Запустити код
Тоді наш код мав би виглядати math.sqrt(x)
замість sqrt(x)
. Це трапляється тому, що коли ми використовуємо import x
, x
сам простір імен створюється, щоб уникнути конфліктів імен. Ви повинні отримати доступ до кожного окремого об'єкта модуля як x.
.
Але коли ми використовуємо, from x import y
ми погоджуємось додавати y
до основного глобального простору імен. Отже, використовуючи це, ми повинні переконатися, що в нашій програмі немає об’єкта з таким самим іменем.
Ніколи не використовуйте, from x import y
якщо названий об’єкт y
уже існує
Наприклад, у os
модулі є метод open
. Але у нас навіть є вбудована функція, яка називається open
. Отже, тут слід уникати використання from os import open
.
Ми навіть можемо використовувати form x import *
, це імпортує всі методи, класи цього модуля до глобального простору імен програми. Це погана практика програмування. Будь ласка, уникайте цього.
Загалом слід уникати from x import y
просто через проблеми, які це може спричинити у великомасштабних програмах. Наприклад, ви ніколи не знаєте, чи може інший програміст захотіти створити нову функцію, яка, здається, є назвою однієї з існуючих функцій. Ви також не знаєте, чи змінить Python бібліотеку, з якої ви імпортуєте функції. Хоча ці проблеми існуватимуть не так часто для сольних проектів, як зазначалося раніше, це погана практика програмування, і її слід уникати.