在Python函数中使用kwarg=kwarg是否存在任何危险



我有时在其中一个函数中看到了kwarg=kwarg的代码,如下所示:

def func1(foo, kwarg):
    return(foo+kwarg)
def func2(bar, kwarg):
    return(func1(bar*2, kwarg=kwarg))
print(func2(4,5))

为了避免任何可能的错误,我通常会尝试避免这种表示法(例如,使用kwarg1=kwarg2),但这真的有必要吗?

它没有任何错误-在这种情况下,kwarg只是一个变量名-它不是保留的。不过,它可能有点混淆,因为def func(**kwargs):是创建一个包含传递到函数中的所有"关键字参数"的字典的常见语法。既然你在这里没有这么做,那么使用这样一个相似的名称是不必要的混淆。虽然还不清楚你说的是使用确切的名称,所以这可能只是示例的问题。

但从广义上讲,通过something=something是相当普遍的做法。你会在很多地方看到它,例如,如果你在Matplotlib中迭代一个调色板,你可能会把color=color传给plot,或者如果你在Pandas中构建一个标题列表,你可能把coloumns=columns传给DataFrame

底线是应该清楚。如果是,那就很好。如果不是,那就不是。

最新更新