Perché Python 2.6 non ha impostato valori letterali e di comprensione o comprensioni dettate? [chiuso]
-
19-08-2019 - |
Domanda
Python 2.6 è stato sostanzialmente un trampolino di lancio per rendere più semplice la conversione in Python 3. Molte delle funzionalità destinate a Python 3 sono state implementate in 2.6 se non hanno rotto la retrocompatibilità con la sintassi e le librerie di classe.
Perché non sono stati impostati valori letterali ( {1, 2, 3}
), impostati comprensione ( {v for v in l}
) o comprensione dettata (< codice> {k: v per k, v in d} ) tra loro? In particolare la comprensione del dict sarebbe stata un grande vantaggio ... Mi ritrovo a usare il dict ([(k, v) per k, v in d]) molto più brutto ultimamente.
C'è qualcosa di ovvio che mi manca, o era solo una caratteristica che non ha fatto il taglio?
Soluzione
Non è stato fatto perché nessuno si è preso il tempo per farlo. Ci sono bug aperti da mesi e nessuno li ha commentati:
Quindi non era abbastanza importante per nessuno, probabilmente.
Altri suggerimenti
Tutti questi sono cambiamenti di sintassi / grammatica. Tali modifiche vengono tradizionalmente introdotte per prime in una versione di Python x.y con un'istruzione from __future__ import & # 8230;
e implementate almeno sulla versione di Python x. (Y + 1). Una simile transizione non è ancora avvenuta per questi cambiamenti.
Tecnicamente, ho risposto al tuo " why " ;.
Ora, se volevi dire, & # 8220; perché nessuno si è preso il tempo di suggerire, supportare e implementare qualcosa che I vorrebbe avere anche in 2.x, anche se < em> loro non lo conoscono dal momento che I non ha mai provato a suggerire / supportare il backport di questi miglioramenti della sintassi in comp.lang.python o Python-Dev e I non hai mai provato a leggere nemmeno i PEP?
HTH
A proposito, non dovresti usare il dict ([(k, v) per k, v in d])
, ma il dict ((k, v) per k , v in d)
. Più efficiente. Perché creare un elenco intermedio?