Почему не стоит использовать import * в Python

Почему надо нельзя использовать import * в Python

Использование import * в программах python считается плохой привычкой, поскольку таким образом вы ухудшаете пространств имен, оператор import * импортирует все функции и классы в ваше собственное пространство имен (namespace), что может привести к конфликту с функциями, которые вы определяете, или функциями других импортируемых библиотек.

Кроме того, в некоторых случаях становится очень трудно сказать, из какой библиотеки исходит конкретная функция. Риск переопределения переменных/функций и т. д. всегда сохраняется при использовании практики импорта*.

Так почему же не следует использовать import *(all), давайте узнаем.

Читаемость кода

  • Остается загадкой то, из какого модуля была импортирована определенная вещь. Это приводит к низкой читабельности кода.
  • Засорение пространства имен, import * импортирует все функции и классы в вашем собственном пространстве имен, которые могут конфликтовать с функциями и классами других библиотек.
  • Возможность hiding bugs (скрытия багов)
  • Такие инструменты, как pyflakes, нельзя использовать для статистического обнаружения ошибок в исходном коде.

Это не означает, что использовать import * нельзя, если бы вам сказали, что в этой вселенной нет ничего подобного import*, вы бы жаждали этого. Единственное, что вы должны помнить при использовании import*, это то, что вы всегда должны использовать его осторожно и с соблюдением дисциплины.

Теперь давайте рассмотрим пример:

# import the module a using import * 
from a import *
# define a function sum
def sum (x, y):
    return x + y
print (sum (2, 6))

Рассмотрим пакет A, содержащий функцию sum (a, b).

Ошибка с этим кодом заключается в том, что функция sum, которую мы определяем, переопределяет функцию sum из модуля “a”, который мы импортировали, и у нас даже нет представления о ней. Кроме того, становится очень трудно определить, какая функция на самом деле вызывается в случае больших программ.

Правильный метод

# import the module a as l
import a as l
def sum (x, y):
return x + y
# calls the self-defined sum function
print (sum (2, 6))
# calls the sum function defined in the module a
print (l.sum(2, 6))

Кодирование таким образом повышает читабельность кода, а также облегчает его отладку, и вероятность возникновения какого-либо конфликта практически равна нулю.

Источник

Why import star in Python is a bad idea


.

  • October 24, 2023