2012-05-05 9 views
6

Sono un programmatore Java e ho sempre creato file separati per Classi, sto cercando di imparare Python e voglio impararlo bene. È costoso in Python mettere le Classi in file diversi, il che significa che un file contiene solo una classe. Ho letto in un blog che è costoso perché la risoluzione dell'operatore . avviene in fase di esecuzione in python (succede in fase di compilazione per Java).È costoso in Python inserire classi in file diversi?

Nota: ho letto in altri post che li possiamo mettere in file separati, ma non menzionano se sono più costosi in alcun modo

risposta

8

E 'un po' più costosa, ma non in misura è probabile che ti interessi. È possibile negare questo costo aggiuntivo facendo:

from module import Class 

Come allora la classe verrà assegnato ad una variabile nello spazio dei nomi locali, il che significa che non ha a che fare la ricerca attraverso il modulo.

In realtà, tuttavia, è improbabile che ciò sia importante. Il costo di cercare qualcosa di simile sarà molto piccolo, e dovresti concentrarti sul fare ciò che rende il tuo codice più leggibile. Dividere le classi tra moduli e pacchetti come è logico per il tuo programma e man mano che lo mantiene chiaro.

Se, ad esempio, si utilizza qualcosa di più volte in un ciclo che è un collo di bottiglia per il programma, è possibile assign it to a local variable for that loop, ad esempio:

import module 

... 

some_important_thing = module.some_important_thing 

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

Si noti che questo tipo di ottimizzazione è improbabile che sia l'importante cosa, e dovresti solo ottimizzare dove hai le prove che devi fare.

+2

Penso che scoraggiato sia un termine forte. In generale, è meglio importare normalmente in modo da non ingombrare il tuo spazio dei nomi, sì. In alcuni casi, tuttavia, se, ad esempio, stai utilizzando qualcosa importato molto nel tuo codice, non c'è niente di sbagliato nell'usare questo tipo di importazione. –

+0

Questa è una straordinaria funzione che memorizza il nome della classe con il modulo in una variabile, che migliorerà le prestazioni del mio codice –

+0

@Lattyware Rimosso il mio commento da quando hai menzionato cosa intendevo nella tua modifica ma cosa intendi per qualcosa importato molto? – jamylak

Problemi correlati