【发布时间】:2020-04-01 06:37:16
【问题描述】:
我正在使用具有大量位置和命名参数的第 3 方库函数。该函数是从我的代码中的多个点调用的,具有相同的参数/值。
为了便于维护,我不想在整个代码中多次硬编码数十个相同的参数。我希望有一种方法可以将它们存储在数据结构中,所以我只需要传递数据结构。大致如下:
假设我正在调用的函数的签名如下:
def lib_function(arg1, arg2, arg3=None, arg4=None):
假设在我的代码中我想用值来调用它
-
a用于 arg1, -
b用于 arg2 -
d用于 arg4 - (而且我没有使用 arg3)。
我尝试过如下定义数据结构:
arguments = ('a', 'b', {'arg4':'d'})
并像这样使用它:
res = lib_function(arguments)
但这显然是不正确的 - 元组和字典在调用期间没有解包,而是作为单个第一个参数处理。
有没有办法在 Python 中做到这一点?
显而易见的替代方法是在我的代码中代理 lib_function,将参数硬编码在代理中,然后在不带参数的情况下调用该代理。比如:
def proxy_lib_function():
return lib_function('a', 'b', arg4='d')
res = proxy_lib_function()
但是我想检查一下没有比 Pythonic 更好的方法了。
【问题讨论】: