繁体   English   中英

Python,如何以最优雅的方式将任意变量从 function 传递给 function?

[英]Python, how to pass arbitrary variables from function to function in the most elegant way?

我有一个带有键/值对的字典vars = {'a': 1, 'b': 2} 将来可以使用新变量扩展该字典。 我想用 vars dict 中的变量调用 func1。 在 func1 中,我将使用 vars dict 中的零个或多个变量。 如果 func1 必须调用 func2,我希望 func2 从原始 vars dict 接收所有变量。 Func2 将使用 vars dict 中的零个或多个变量。

像这样的东西:

def func1(**kwargs):
    print(f'func1 a = {a}, b is not important')
    return func2(**kwargs)

def func2(**kwargs):
    return f'func2 a = {a}, b = {b}, both variables are important'


vars = {'a' : 1, 'b' : 2}
print(func1(**vars))

但这不起作用,因为 kwargs 是一本字典。 如果需要,我可以在 function 开头解压缩变量:

a = kwargs['a']
b = kwargs['b']

但是如果原始变量字典中出现了一个新变量“c”,我将不得不在每个 function 的开头更改这些解包。 我还可以设置参数def func1(a, b):def func2(a, b):但我必须重新创建 kwargs dict 才能将其进一步发送。 同样,如果出现新变量“c”,我将不得不更改每个 function 的签名。 我还可以将 func1 定义为波纹管,以便进一步向下传递变量:

def func1(a, kwargs):
    print(f'func1 a = {a}, b is not important')
    kwargs['a'] = a
    return func2(**kwargs)

也许要创建一个 object 并将其属性设置为 vars dict 键/值对,然后将此 object 作为函数参数发送?

在这种情况下,如何以最优雅的方式将任意变量从 function 传递到 function?

问候。

为什么不将变量保存在字典中并以这种方式访问它们呢?

def func1(**kwargs):
    print(f"func1 a = {kwargs['a']}, b is not important")
    return func2(**kwargs)

def func2(**kwargs):
    return f"func2 a = {kwargs['a']}, b = {kwargs['b']}, both variables are important"


vars = {'a' : 1, 'b' : 2}
print(func1(**vars))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM