Python: avoiding Pylint warnings about too many arguments
First, one of Perlis's epigrams:
"If you have a procedure with 10 parameters, you probably missed some."
Some of the 10 arguments are presumably related. Group them into an object, and pass that instead.
Making an example up, because there's not enough information in the question to answer directly:
class PersonInfo(object): def __init__(self, name, age, iq): self.name = name self.age = age self.iq = iq
Then your 10 argument function:
def f(x1, x2, name, x3, iq, x4, age, x5, x6, x7): ...
becomes:
def f(personinfo, x1, x2, x3, x4, x5, x6, x7): ...
and the caller changes to:
personinfo = PersonInfo(name, age, iq)result = f(personinfo, x1, x2, x3, x4, x5, x6, x7)
Do you want a better way to pass the arguments or just a way to stop Pylint from giving you a hard time? If the latter, you can stop the nagging by putting Pylint-controlling comments in your code along the lines of:
#pylint: disable=R0913
or, better:
#pylint: disable=too-many-arguments
remembering to turn them back on as soon as practicable.
In my opinion, there's nothing inherently wrong with passing a lot of arguments and solutions advocating wrapping them all up in some container argument don't really solve any problems, other than stopping Pylint from nagging you :-).
If you need to pass twenty arguments, then pass them. It may be that this is required because your function is doing too muchand refactoring could assist there, and that's something you should look at. But it's not a decision we can really make unless we see what the 'real' code is.
You can easily change the maximum allowed number of arguments in Pylint. Just open your pylintrc file (generate it if you don't already have one) and change:
max-args = 5
to:
max-args = 6 # Or any value that suits you
From Pylint's manual
Specifying all the options suitablefor your setup and coding standardscan be tedious, so it is possible touse a rc file to specify the defaultvalues. Pylint looks for /etc/pylintrcand ~/.pylintrc. The --generate-rcfileoption will generate a commentedconfiguration file according to thecurrent configuration on standardoutput and exit. You can put otheroptions before this one to use them inthe configuration, or start with thedefault values and hand tune theconfiguration.