2012-05-05 11 views
6

Soy programador de Java y siempre he creado archivos separados para Clases, estoy intentando aprender Python y quiero aprender bien. ¿Es costoso en Python poner Clases en diferentes archivos, lo que significa que un archivo contiene solo una clase. Leí en un blog que es costoso porque la resolución del operador . ocurre en tiempo de ejecución en python (ocurre en tiempo de compilación para Java).¿Es costoso en Python poner clases en diferentes archivos?

Nota: He leído en otras críticas que podemos ponerlos en archivos separados, pero que no mencionan si son más costosos de ninguna manera

Respuesta

8

Es un poco más costoso, pero no hasta el punto es probable que te importe. Puede anular este costo extra haciendo:

from module import Class 

como entonces se le asignará la clase a una variable en el espacio de nombres locales, lo que significa que no tiene que hacer la búsqueda a través del módulo.

En realidad, sin embargo, es poco probable que esto sea importante. El costo de buscar algo como esto va a ser muy pequeño, y debe centrarse en hacer lo que hace que su código sea más legible. Divida las clases entre los módulos y paquetes como es lógico para su programa, y ​​como los mantiene limpios.

Si, por ejemplo, está utilizando algo repetidamente en un bucle que es un cuello de botella para su programa, puede assign it to a local variable for that loop, por ejemplo:

import module 

... 

some_important_thing = module.some_important_thing 

#Bottleneck loop 
for item in items: 
    #module.some_important_thing() 
    some_important_thing() 

Tenga en cuenta que este tipo de optimización es poco probable que sea el importante cosa, y solo debería optimizar siempre que tenga pruebas de que debe hacerlo.

+2

Creo que desalentado es un término fuerte. En general, es mejor que importes normalmente para no ocupar tu espacio de nombres, sí. En algunos casos, sin embargo, si, por ejemplo, está utilizando algo importado a lo largo de su código, no hay nada de malo en usar este tipo de importación. –

+0

Esa es una característica sorprendente que almacena el nombre de clase con módulo en una variable, que mejorará el rendimiento de mi código –

+0

@Lattyware Eliminado mi comentario ya que mencionó lo que quise decir en su edición, pero ¿qué quiere decir con algo importado mucho? – jamylak

Cuestiones relacionadas