Por qué importar estrella en Python es una mala idea

El uso de import * en los programas de python se considera un mal hábito porque de esta manera está contaminando su espacio de nombres, la instrucción import * importa todas las funciones y clases en su propio espacio de nombres, lo que puede entrar en conflicto con las funciones que defina o funciones de otras bibliotecas que usted importar. También se vuelve muy difícil en algunos momentos decir de qué biblioteca proviene una función en particular. El riesgo de anular las variables/funciones, etc. siempre persiste con la práctica de importación *.

A continuación se presentan algunos puntos sobre por qué no se debe usar import * :

  • Legibilidad del código
  • Siempre es un misterio lo que se importa y no se puede encontrar fácilmente desde qué módulo se importó algo que resulta en una baja legibilidad del código.
  • Al contaminar el espacio de nombres, import * importa todas las funciones y clases en su propio espacio de nombres que pueden entrar en conflicto con la función y las clases que define o la función y las clases de otras bibliotecas que puede importar.
  • Posibilidad concreta de ocultar errores
  • Las herramientas como pyflakes no se pueden usar para detectar errores en el código fuente de forma estática.

Todo esto no significa que usar import * siempre sea malo, si te hubiera dicho que no hay nada como import * en este universo, lo habrías estado deseando. Lo único que debe recordar al usar import * es que siempre debe usar esto con cuidado y con disciplina.

Ahora sumerjámonos en un ejemplo para ver el problema de una manera más práctica y fácil de entender.

Considere un paquete a que contiene una función suma (a, b)

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

el error con este código es que la función de suma que definimos anula la función de suma del módulo ‘a’ que importamos y ni siquiera tenemos idea al respecto. también se vuelve muy difícil identificar qué función se está llamando en el caso de programas grandes.

Método correcto:

# 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))

La codificación de esta manera aumenta la legibilidad del código y se vuelve fácil de depurar y hay casi cero posibilidades de que ocurra algún conflicto.

Publicación traducida automáticamente

Artículo escrito por engrravijain y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *