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

时间:2016-08-01 23:40:45

标签: python function notation keyword-argument

我有时会在其中一个函数中看到带有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)以避免任何可能的错误,但实际上这是否必要?

1 个答案:

答案 0 :(得分:2)

没有错误 - 在这种情况下kwarg只是一个变量名称 - 它不是保留的。但是,它可能会有一些混淆,因为def func(**kwargs):是创建所有"关键字参数"的字典的通用语法。传递给函数的。由于您在此处没有这样做,因此使用这样一个相似的名称会造成不必要的混淆。虽然你不清楚你是在谈论使用这个确切的名字,所以这可能仅仅是这个例子的问题。

但从广义上讲,通过something=something是相当普遍的做法。您可以在很多地方看到它,例如,如果您在Matplotlib中重复使用颜色调色板,您可以将color=color传递到plot,或者如果您需要在Pandas中构建标题列表,您可以将coloumns=columns传递给DataFrame

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