Python: éviter pylint avertissements sur trop d'arguments

Je veux refactoriser un gros Python fonction en petits. Considérons, par exemple, cet extrait de code suivant:

x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9

De sûr, c'est un exemple trivial. Dans la pratique, le code est plus complexe. Mon point est qu'il contient beaucoup de locaux-portée des variables qui doivent être transmises à l'extrait de fonction, qui pourrait ressembler à:

def mysum(x1, x2, x3, x4, x5, x6, x7, x8, x9):
    x = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
    return x

Le problème est que pylint pourrait déclencher un avertissement sur trop d'arguments.
J'ai pu éviter l'avertissement en faisant quelque chose comme:

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)

mais cette approche loos laid pour moi, il nécessite d'écrire beaucoup de code qui est même superflu.

Est-il un meilleur moyen de le faire?

  • Je crois mysum() peut être simplifiée: 'return sum(d.les valeurs ()) "ou au moins" return sum([d[foo] pour les foo in ('x1', 'x2', ..., 'x9')])'. Suis-je trop liste-de la compréhension heureux?
  • Le mysum() n'est qu'une abstraction, dans des scénarios réels, le code qui doit être extraite est beaucoup plus complexe. Mon point, c'est avoir à passer beaucoup de variables à l'extrait de fonction et d'éviter la pylint avertissement si possible (sans explicitement pylint de simplement ignorer cet avertissement).
InformationsquelleAutor Anonymous | 2009-05-03