gpt4 book ai didi

python - 是否可以将参数解包运算符(又名飞溅运算符)实现为函数?

转载 作者:太空狗 更新时间:2023-10-30 02:30:27 24 4
gpt4 key购买 nike

场景:

kwargs = dict(a=1, b=2)
def test(a=None, b=None): return a, b

def unpack(kwargs):
...
return whatever

test(unpack(kwargs)) # instead of test(**kwargs)
>> 1, 2

我疲惫的头脑可以启动 atm 的唯一解决方案是扭转整个困惑局面如:

def unpack(f, kwargs):
return f(**kwargs)

unpack(test, kwargs)
>> 1, 2

至于为什么:没有立即的需要。但出于好奇,我想知道 unpack 函数是否是总体上是可行的。

最佳答案

不,这是不可能的。参数解包是调用语法的一部分,而不是产生参数的表达式。

Python 解析器和编译器将语法转换为专门的字节码。如果没有这些,函数将无法复制将对象解压缩到参数中所做的工作。

相反,生成一个位置参数列表和一个关键字参数字典,并且总是应用它们,即使是空的:

def update_kwargs(kwargs):
# update the dictionary

args, kwargs = [], {}
update_kwargs(kwargs)
test(*args, **kwargs)

*args 的空列表或**kwargs 的空字典只会导致根本不应用任何参数。

关于python - 是否可以将参数解包运算符(又名飞溅运算符)实现为函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26863079/

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