Letterali contro l'istanziazione di elenchi di nomi e dit in Python?

2

In Python, qual è la differenza in queste dichiarazioni ...

my_list = []
my_list = list()

... e in questi?

my_dict = {}
my_dict = dict()

Sono interpretati allo stesso modo, e perché dovresti usarne uno sull'altro? Non ho visto o notato una differenza.

    
posta mxplusb 26.05.2016 - 19:04
fonte

2 risposte

2

La differenza tra

my_list = list()

e

my_list = []

è che list richiede una ricerca nello spazio dei nomi, prima nelle globali a livello di modulo, quindi nei builtin.

D'altra parte, [] è una lista letterale e viene analizzata come creazione di un nuovo elenco dalla lingua, che non richiede alcuna ricerca di nomi. Quindi il letterale è più veloce sulla creazione dell'oggetto.

Altrimenti, sono entrambi uguali.

Lo stesso vale per dict() e {} .

    
risposta data 26.05.2016 - 19:21
fonte
0

Non uso quasi mai i letterali di raccolta per le raccolte vuote nel mio codice Python e preferisco i costruttori di nome list , set , dict e tuple .

La ragione di ciò è che i letterali possono essere abbastanza confusi. Ad esempio, {} è non il set vuoto ma un dizionario vuoto che è contrario a quello che chiunque con uno sfondo matematico si aspetterebbe intuitivamente. Inoltre, la tupla vuota () sembra davvero imbarazzante. Una volta che utilizzo i costruttori denominati per set, dizionari e tuple, è solo questione di coerenza usarli anche per gli elenchi, anche se la lista vuota% letterale% co_de sembra decente e non sono a conoscenza di brutte sorprese che il suo utilizzo potrebbe causare.

    
risposta data 27.05.2016 - 00:14
fonte

Leggi altre domande sui tag