Voglio refactoring una grande funzione Python in quelle più piccole. Ad esempio, si consideri questo frammento di codice seguente:Python: evitare gli avvertimenti di pylint su troppi argomenti
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
Naturalmente, questo è un esempio banale. In pratica, il codice è più complesso. Il mio punto è che contiene molte variabili local-scope che avrebbero dovuto essere passati alla funzione estratto, che potrebbe apparire come:
def mysum(x1, x2, x3, x4, x5, x6, x7, x8, x9):
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
Il problema è che pylint innescherebbe un avvertimento circa troppi argomenti. ho potuto evitare l'avvertimento facendo qualcosa di simile:
def mysum(d):
x1 = d['x1']
x2 = d['x2']
...
x9 = d['x9']
x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
return x
def mybigfunction():
...
d = {}
d['x1'] = x1
...
d['x9'] = x9
x = mysum(d)
ma questo approccio Loos brutto per me, richiede la scrittura di un sacco di codice che è anche ridondante.
Esiste un modo migliore per farlo?
Credo che mysum() possa essere semplificato in: 'return sum (d.values ())' o almeno 'return sum ([d [foo] per foo in (' x1 ',' x2 ', .. ., 'x9')]) '. Sono troppo felice nella comprensione delle liste? – MatrixFrog
mysum() è solo un'astrazione, in scenari reali il codice che deve essere estratto è molto più complesso. Il mio punto è di dover passare molte variabili alla funzione estratta ed evitare l'avvertimento di pilore se possibile (senza fare esplicitamente ricorso a pylint per ignorare tale avviso). – Anonymous