如何通过夸格斯更远?

2024-10-01 13:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在^{}中有一个外部函数wms130.getfeatureinfo,它使用kwargs:

def getfeatureinfo(self, layers=None,
...
                       method='Get',
                       timeout=None,
                       **kwargs
                       ):

我在内部函数wms130.__build_getmap_request中使用了kwargs:

^{pr2}$

显然,作者的意图是将所有关键字参数按原样放入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传递,而不是作为单个条目传递?在


Tags: 函数buildselfnone参数requestlayers关键字
1条回答
网友
1楼 · 发布于 2024-10-01 13:25:00

使用解包将前面的kwargs进一步传递下去。不要为它引入新的关键字参数:

request = self.__build_getmap_request(
            ...
            exceptions=exceptions,
            **kwargs)

所有这些关键字参数和解压缩的kwargs将在下一级kwargs中捕获。在

此外,可以使用简单的dict.update来更新请求dict,而不是循环:

^{pr2}$

相关问题 更多 >