Пояснення заяв про імпорт Python

Вивчаючи програмування та читаючи деякі ресурси, ви б стикалися з цим словом «абстракція», що просто означає зменшити і повторно використати код якомога більше.

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

Модулі з’являються, коли ви хочете повторно використовувати групу функцій у різних вихідних файлах. Модулі також корисні для гарної структуризації програми.

  • Використання стандартних бібліотек та інших сторонніх модулів
  • Структурування програми

Використання стандартних бібліотек

Приклад: Ви можете детально прочитати про методи / функції всіх стандартних бібліотек в офіційних документах 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 бібліотеку, з якої ви імпортуєте функції. Хоча ці проблеми існуватимуть не так часто для сольних проектів, як зазначалося раніше, це погана практика програмування, і її слід уникати.