在 Python 函数中使用 kwarg=kwarg 有什么危险吗?

Are there any dangers associated with using kwarg=kwarg in Python functions?

我有时会在其中一个函数中看到带有 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): 是创建所有传递给函数的 "key word arguments" 字典的通用语法。由于您在这里没有这样做,因此使用这样一个相似的名称会造成不必要的混淆。虽然不清楚您是在谈论使用那个确切的名称,但也许这只是示例的问题。

但从广义上讲,通过 something=something 是相当普遍的做法。您会在很多地方看到它,例如,如果您在 Matplotlib 中遍历调色板,您可能会将 color=color 传递给 plot,或者如果您正在构建 headers 在 Pandas 中你可以将 coloumns=columns 传递给 DataFrame.

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