gpt4 book ai didi

Python:避免关于太多参数的 Pylint 警告

转载 作者:IT老高 更新时间:2023-10-28 21:35:51 33 4
gpt4 key购买 nike

我想将一个大的 Python 函数重构为更小的函数。例如,考虑以下代码片段:

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

当然,这是一个简单的例子。在实践中,代码更复杂。我的观点是它包含许多必须传递给提取函数的局部范围变量,如下所示:

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

问题在于 Pylint 会触发有关参数过多的警告。

我可以通过执行以下操作来避免警告:

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)

但这种方法对我来说很难看。它需要编写大量甚至是多余的代码。

有没有更好的方法?

最佳答案

首先,Perlis's epigrams 之一:

"If you have a procedure with 10 parameters, you probably missed some."

这 10 个论点中的一些可能是相关的。将它们分组到一个对象中,然后传递它。

举个例子,因为问题中没有足够的信息来直接回答:

class PersonInfo(object):
def __init__(self, name, age, iq):
self.name = name
self.age = age
self.iq = iq

那么你的10个参数函数:

def f(x1, x2, name, x3, iq, x4, age, x5, x6, x7):
...

变成:

def f(personinfo, x1, x2, x3, x4, x5, x6, x7):
...

调用者变为:

personinfo = PersonInfo(name, age, iq)
result = f(personinfo, x1, x2, x3, x4, x5, x6, x7)

关于Python:避免关于太多参数的 Pylint 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/816391/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com