Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当包装器具有相同参数时,将kwarg传递给包装函数_Python - Fatal编程技术网

Python 当包装器具有相同参数时,将kwarg传递给包装函数

Python 当包装器具有相同参数时,将kwarg传递给包装函数,python,Python,假设一个函数包装了其他函数,例如map,其签名如下: def map(func, iterable, *args, **kwargs) 现在假设我有一个函数x,它的签名是: def x(a, b=None, c=0, d=100, iterable=list()) 如果我试着打电话 map(x, [1,2,3,4], iterable=[5,6,7,8]) 我将得到一个TypeError,因为map函数已经被传递了两次“iterable”参数,即使其中一个要传递给map函数,另一个要传递给

假设一个函数包装了其他函数,例如map,其签名如下:

def map(func, iterable, *args, **kwargs)
现在假设我有一个函数x,它的签名是:

def x(a, b=None, c=0, d=100, iterable=list())
如果我试着打电话

map(x, [1,2,3,4], iterable=[5,6,7,8])
我将得到一个TypeError,因为map函数已经被传递了两次“iterable”参数,即使其中一个要传递给map函数,另一个要传递给x函数


这有什么关系吗

这是个好地方。此函数返回一个分部,其行为类似于func,允许映射工作,但也允许您提前更改关键字。在这种情况下,您需要做的就是映射(functools.partial(x,iterable=[5,6,7,8]),[1,2,3,4])为了简化您的问题,我有一个函数,它至少需要一个普通参数,然后是关键字参数

def fun(x, y, **karg):
    print x, y, karg
我们不能在卡丁车里用x或y。为什么? Python支持另一个特性“调用函数时按名称匹配”,参数不必位于同一位置。我们总是可以称之为乐趣

fun(y = 12, x = 6)
所以,当我们使用普通参数名作为关键字参数时,这对于python来说显然是不明确的。
有一些黑客可以解决这个问题,但最好在关键字参数中使用不同的名称

听起来您需要更具描述性的参数名称Sure,但如果您没有编写函数,则无法选择参数名称。