在 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
.
底线是应该清楚的。如果是,那很好。如果不是,那就不是。
我有时会在其中一个函数中看到带有 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
.
底线是应该清楚的。如果是,那很好。如果不是,那就不是。