Как импортировать только определенные функции или классы из модуля?

Использовать конструкцию from модуль import функция1, функция2, Класс1. Например:
from math import sqrt, pi
Или импортировать всё и выбрать необходимое:
from math import *
число_пи = pi
Но это менее предпочтительно, т.к. загрязняет пространство имен.

Для импорта только определенных функций или классов из модуля в Python, используется ключевое слово from вместе с import.

Примеры:

  • Импорт одной функции:
    from модуль import функция

    Например, чтобы импортировать функцию sqrt из модуля math:

    from math import sqrt
    
    print(sqrt(16)) # Вывод: 4.0
    
  • Импорт нескольких функций:
    from модуль import функция1, функция2, функция3

    Например, чтобы импортировать функции sqrt и pow из модуля math:

    from math import sqrt, pow
    
    print(sqrt(9)) # Вывод: 3.0
    print(pow(2, 3)) # Вывод: 8.0
    
  • Импорт класса:
    from модуль import Класс

    Например, чтобы импортировать класс datetime из модуля datetime:

    from datetime import datetime
    
    now = datetime.now()
    print(now) # Вывод: текущая дата и время
    
  • Импорт с переименованием (alias):
    from модуль import функция as новое_имя

    Это полезно, если имя функции конфликтует с другим именем в вашем коде, или для сокращения длинных имен:

    from math import sqrt as square_root
    
    print(square_root(25)) # Вывод: 5.0
    

Преимущества импорта конкретных элементов:

  • Улучшение читаемости кода: Явно видно, какие элементы используются из модуля.
  • Уменьшение пространства имен: Импортируются только необходимые элементы, избегая засорения текущего пространства имен.
  • Потенциальное улучшение производительности: Хотя в большинстве случаев это незначительно, импорт только необходимых элементов может немного уменьшить время загрузки модуля.

Важно помнить: При использовании from ... import * импортируются все имена из модуля, что может привести к конфликтам имен и ухудшению читаемости. Избегайте использования from ... import * в большинстве случаев, особенно в больших проектах.

0