我在^{wms130.getfeatureinfo
,它使用kwargs:
def getfeatureinfo(self, layers=None,
...
method='Get',
timeout=None,
**kwargs
):
我在内部函数wms130.__build_getmap_request
中使用了kwargs:
显然,作者的意图是将所有关键字参数按原样放入HTTP查询的参数中。在
不幸的是,当我把kwarg传递给外部函数时,它有一个值
{'MAXCC': '100'}
但是当到达这个内部代码时,它有一个值
{'kwargs': {'MAXCC': '100'}}
即增加额外等级。这是因为内部函数是用
# GetMap-Request
request = self.__build_getmap_request(
layers=layers,
styles=styles,
srs=srs,
bbox=bbox,
dimensions=dimensions,
elevation=elevation,
format=format,
size=size,
time=time,
transparent=transparent,
bgcolor=bgcolor,
exceptions=exceptions,
kwargs=kwargs)
也就是说,外部kwargs被包装成名为kwargs
的单关键字参数。在
问题是双重的:
1)这是OWSLib中的一个bug,目的是让kwargs扩展?(我认为它是99%,因为不需要添加循环来迭代字典中的单个已知条目)
2)如何在Python中调用内部函数,使kwargs作为kwargs传递,而不是作为单个条目传递?在
使用解包将前面的
kwargs
进一步传递下去。不要为它引入新的关键字参数:所有这些关键字参数和解压缩的
kwargs
将在下一级kwargs
中捕获。在此外,可以使用简单的
^{pr2}$dict.update
来更新请求dict,而不是循环:相关问题 更多 >
编程相关推荐