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