gpt4 book ai didi

python - 使用相同的字典作为各种函数的参数,有些函数的参数较少

转载 作者:行者123 更新时间:2023-12-01 09:15:38 25 4
gpt4 key购买 nike

我有几个函数,它们都采用一大堆相同的参数。其中一些除此之外还有额外的论据。我想将相同的字典传递给所有这些字典,但是参数较少的字典会提示字典中的额外项目。

最好的解决方案是什么?将无用的虚拟参数放入参数较少的函数中?

最佳答案

制作简单的装饰器,它将使用inspect模块来获取函数参数列表。这将为您提供示例:

import inspect

def take_many_arguments(fn):
origf = fn
def _f(*arg, **args):
new_args = {}

for a in inspect.getargspec(origf).args:
if a not in args:
continue
new_args[a] = args[a]

return origf(*arg, **new_args)
return _f


class C:
@take_many_arguments
def fn1(self, a):
print(a)

@take_many_arguments
def fn2(self, a, b):
print(a, b)

@take_many_arguments
def fn3(self, a, b, c):
print(a, b, c)


@take_many_arguments
def fn4(a, b):
print(a, b)


d = {'a': 1, 'b': 2, 'c': 3}

# for classes:
c = C()
c.fn1('Normal call')
c.fn1(**d)
c.fn2(**d)
c.fn3(**d)

# for functions:
fn4(9, 8)
fn4(**d)

输出:

Normal call
1
1 2
1 2 3
9 8
1 2

关于python - 使用相同的字典作为各种函数的参数,有些函数的参数较少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com