Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Импорт модулей в Python: практическое руководство с примерами

Что такое модули в Python?

Модуль — одиночный Python-файл, содержащий переменные, функции и классы. Если файл назван guru99.py, модуль доступен как guru99. Модули позволяют разбить большую программу на логические части, держа код организованным и переиспользуемым.

Зачем импортировать модули?

Чтобы использовать код, определённый в другом файле, нужно импортировать его. Импорт даёт доступ к функциям, классам и переменным модуля, как ключевое слово import в JavaScript, Java или Ruby.

Создание и импорт модуля

Пройдёмся по простому примеру.

Структура папки:

modtest/
  test.py
  display.py

1. Создайте test.py:

def display_message():
    return 'Welcome to Guru99 Tutorials!'

2. Создайте display.py и импортируйте test:

import test
print(test.display_message())

Запуск display.py печатает:

Welcome to Guru99 Tutorials!

Импорт класса из модуля

Пусть Car.py определяет класс автомобиля:

class Car:
    brand_name = 'BMW'
    model = 'Z4'
    manu_year = '2020'
    def __init__(self, brand_name, model, manu_year):
        self.brand_name = brand_name
        self.model = model
        self.manu_year = manu_year
    def car_details(self):
        print('Car brand is', self.brand_name)
        print('Car model is', self.model)
        print('Car manufacture year is', self.manu_year)
    def get_car_brand(self):
        print('Car brand is', self.brand_name)
    def get_car_model(self):
        print('Car model is', self.model)

Используйте в display.py:

import Car
car_det = Car.Car('BMW', 'Z5', 2020)
print(car_det.brand_name)
car_det.car_details()
car_det.get_car_brand()
car_det.get_car_model()

Вывод:

BMW
Car brand is BMW
Car model is Z5
Car manufacture year is 2020
Car brand is BMW
Car model is Z5

Использование from для импорта конкретных элементов

Когда нужны только несколько функций или переменных, импортируйте их напрямую:

from test import display_message
print(display_message())

Если попытаться использовать имя, не импортированное, Python поднимет NameError:

from test import display_message
print(display_message1())

Импорт всего из модуля

Импортируйте весь модуль с import test и префиксируйте имена модулем, или импортируйте все имена в текущее пространство имён с from test import *. Последнее удобно, но может загрязнить неймспейс.

Понимание dir()

Встроенная функция dir() перечисляет все атрибуты объекта, включая определённые в модуле:

import Car
print(dir(Car))

Для стандартных библиотек:

import json
print(dir(json))

Работа с пакетами

Пакет — директория, содержащая файл __init__.py и один или более модулей. Например:

Структура директории:

mypackage/
  __init__.py
  module1.py
  module2.py
  module3.py

В module1.py:

def mod1_func1():
    print('Welcome to Module1 function1')
def mod1_func2():
    print('Welcome to Module1 function2')
# …

Импорт с алиасом:

import mypackage.module1 as mod1
mod1.mod1_func1()
mod1.mod1_func2()

Путь поиска модулей Python

При разрешении импорта Python проверяет:

  1. Текущую рабочую директорию.
  2. Встроенные модули.
  3. Директории, перечисленные в sys.path.

Инспектируйте с:

import sys
print(sys.path)

Использование алиасов для модулей

Дайте модулю короткое имя для лучшей читаемости:

import test as t
print(t.display_message())
print(t.my_name)

Абсолютные vs относительные импорты

В много-модульном проекте можно ссылаться на модули либо по полному пути (абсолютный), либо относительно текущего файла.

Пример абсолютного импорта

from package1.module1 import myfunc1
# или
import package1.module1
package1.module1.myfunc1()

Пример относительного импорта

from .module1 import myfunc1
# или
from .subpkg.module3 import myfunc3

Абсолютные импорты понятнее и менее ошибочны при перемещении проекта, но могут стать многословными. Относительные импорты держат код кратким, но сложнее для трассировки в больших проектах.

Ключевые выводы

Python

  1. Модули в Python: создание, импорт и продвинутое использование
  2. Мастерство метода str.count() в Python: как подсчитывать символы и подстроки с примерами
  3. Мастерство строк форматирования format() в Python: понятные примеры
  4. Мастерство метода String.find() в Python: синтаксис, примеры и альтернативы
  5. Освоение лямбда-функций Python: практические примеры и лучшие практики
  6. Функция round() в Python: подробное объяснение с практическими примерами
  7. Освоение функции map() в Python: синтаксис, примеры и лучшие практики
  8. Python timeit(): измерение времени выполнения с практическими примерами
  9. Counter в collections Python: эффективное подсчёт, обновление и арифметические операции
  10. Понимание type() и isinstance() в Python: практические примеры