"Apportare modifiche al codice esistente che funziona" è come i programmi si evolvono ;-). Scrivi una buona batteria di test che danno risultati noti con il codice esistente, salva quei risultati (che sono normalmente noti come "file dorati" in un contesto di test); quindi apporta le modifiche, riesegui i test e verifica (idealmente in modo automatico) che le uniche modifiche ai risultati dei test siano quelle che sono specificatamente destinate allo, senza effetti collaterali indesiderati o imprevisti. Si possono usare strategie di assicurazione della qualità più sofisticate, ovviamente, ma questo è il succo di molti approcci di "test di integrazione".
Per quanto riguarda i due modi per scrivere la semplice funzione key=
, l'intento progettuale era di rendere operator.attrgetter
più veloce essendo più specializzato, ma almeno nelle attuali versioni di Python non c'è alcuna differenza misurabile in termini di velocità. Stando così le cose, per questa situazione speciale raccomanderei lo lambda
, semplicemente perché è più conciso e generale (e di solito non sono un amante del lambda, intendiamoci!).
fonte
2010-04-24 16:03:45
concordo con la risposta di alex (cioè non è un amante lambda) :-) ma anche secondo la nozione di lambda. nel tuo esempio sopra, potrebbe essere un po 'più veloce perché non devi cercare "operatore" o "operatore.attrgetter()" ... hai già l'oggetto funzione reale! tuttavia, è quasi impercettibile come già detto da alex, ma la soluzione 'lambda' conquista i punti Python Zen essendo più facile da leggere. – wescpy
Grazie, Alex e Wesley! – PaulMcG