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

在Python函数中使用kwarg=kwarg有什么危险吗?,python,function,notation,keyword-argument,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),但这确实是必要的吗?它没有任何问题-在这种情况下,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

底线是它应该是明确的。如果是,那就好了。如果不是,也不是

它没有什么问题-在本例中,
kwarg
只是一个变量名-它不是保留的。但是可能会有点混淆,因为
def func(**kwargs):
是创建传递到函数中的所有“关键字参数”字典的常用语法。既然您在这里没有这样做,那么使用这样一个相似的名称是不必要的混淆。虽然还不清楚您所说的是使用这个确切的名称,所以这可能只是示例中的一个问题

但从广义上讲,传递
something=something
是相当普遍的做法。您将在许多地方看到它,例如,如果您在Matplotlib中迭代颜色托盘,您可能会将
color=color
传递到
plot
,或者如果您正在Pandas中构建标题列表,您可能会将
coloumns=columns
传递到
DataFrame


底线是它应该是明确的。如果是,那就好了。如果不是,也不是

通常您会看到
**kwargs
。而且,返回不需要括号。您认为这段代码的哪些特定方面可能有危险?如果您担心的是参数和传递的值使用相同的名称,那也没什么错。@user2357112我只是觉得这个符号看起来有点奇怪。显然,我并不期待上面这个简单的例子会出现问题,但我想知道当代码变得更复杂时,上面的符号是否会导致问题。什么是
kwarg=kwarg
的“更复杂”的例子?我在这里看到的最大问题是命名一个简单的变量
kwarg
,这太荒谬了。应该为**kwargs语法保留这样的名称。通常您会看到
**kwargs
。而且,返回不需要括号。您认为这段代码的哪些特定方面可能有危险?如果您担心的是参数和传递的值使用相同的名称,那也没什么错。@user2357112我只是觉得这个符号看起来有点奇怪。显然,我并不期待上面这个简单的例子会出现问题,但我想知道当代码变得更复杂时,上面的符号是否会导致问题。什么是
kwarg=kwarg
的“更复杂”的例子?我在这里看到的最大问题是命名一个简单的变量
kwarg
,这太荒谬了。应该为**kwargs语法保留这样的名称。