Pregunta

El PEP 8 recomienda que los módulos pueden importar al inicio de los programas.

Ahora, siento que la importación de algunos de ellos en el comienzo de la principal programa (es decir, después de if __name__ == '__main__') tiene sentido. Por ejemplo, si el programa principal lee los argumentos de la línea de comandos, que tienden a hacer import sys al comienzo de la principal programa: de esta manera, sys no tiene que ser importados cuando el código se utiliza como un módulo, ya que no hay necesidad, en este caso, para el acceso argumento de línea de comandos.

¿Qué tan grave es esta infracción a PEP 8? debería abstenerse de hacer esto? o sería razonable para modificar PEP 8?

¿Fue útil?

Solución

Realmente no puedo decirte lo mal que se trata de hacer.

Sin embargo, he mejorado en gran medida el rendimiento (tiempo de respuesta, la carga) para una aplicación web mediante la importación de ciertas bibliotecas sólo en el primer uso.

BTW, la siguiente es también de PEP 8:

  

Pero lo más importante: saber cuándo hay que estar   inconsistente - a veces el estilo   guía simplemente no se aplica. Cuando en   duda, utilizar su mejor juicio. Mira   en otros ejemplos y decidir qué   se ve mejor. Y no dude en   preguntar!

Otros consejos

En general no creo que haya mucho daño a fines de importación para los módulos que no puedan ser necesarios.

Sin embargo sys sin duda lo importar temprano, en la parte superior. Es un módulo tan común que es bastante probable que podría utilizar sys otras partes de su guión y no se dé cuenta de que no siempre ha sido importada. sys es también uno de los módulos que siempre se carga por sí mismo Python, por lo que no están ahorrando cualquier momento de inicio del módulo, evitando la importación (no es que hay mucho de inicio para sys de todos modos).

Te recomiendo que para hacer lo que le parezca más apropiado cuando no hay nada en la PPE sobre su preocupación.

Importar sys en realidad no se necesita tanto tiempo que iba a preocuparse por ello. Algunos módulos toman más tiempo sin embargo. No creo que realmente sys obstruye el espacio de nombres mucho. Yo no usaría una variable o clase llamada sys independientemente.

Si usted piensa que está haciendo más daño que bien tenerlo en la parte superior, por todos los medios lo hacen como usted quiera. PEP 8 es sólo una línea guía y un montón de código que ves no se ajusta a la misma.

El problema no es el rendimiento.

El problema es la claridad.

Su programa "principal" es solamente un programa principal en la actualidad. Mañana, puede ser una biblioteca incluido en algún programa de mayor nivel principal. Más tarde, será sólo un módulo en un paquete más grande.

Debido a que su vida "principal" del programa puede cambiar, tiene dos respuestas.

  1. Aislar los "principales" cosas dentro if __name__ == "__main__". Esto no es una violación grotesca de PEP-8. Esta es una forma razonable para empaquetar las cosas.

  2. Trate de limitar el número de funciones en sus "principales" guiones de programas. Tratar de mantenerlos hasta imports y la materia if __name__ == "__main__". Si el script principal es pequeño, entonces su pregunta importación desaparece.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top