gpt4 book ai didi

python - 在 Python 中解包字典的性能影响

转载 作者:行者123 更新时间:2023-12-05 04:15:34 33 4
gpt4 key购买 nike

我有一段代码接受一系列变量并将它们传递给 N 个模块。为了简化代码的可读性而不是一遍又一遍地传递变量,我创建了一个字典并将其解压到模块中,如下所示:

message_package = {
'v1' : v1,
'v2' : v2,
'v3' : v3
}
for mod in mods:
mod.f1(**message_package)
[...]
if condition:
mod.f2(**message_package)

然后每个模块获取他们需要的变量并忽略其余的:

def mod1.f1(v1=None,**kwargs):
do_something()

从可读性/可用性的角度来看,我发现这非常好——变量可以立即可用,而不必将它们从 **kwargs 中拉出来,如果我将变量添加到消息包中,它只是一行,我不会必须更新所有模块。

由于我是 Python 的新手,所以我想知道...这是否非常不符合 Python 规范?不断解压缩这些词典是否会对性能产生重大影响和/或是否有更好的方法来执行此操作?

最佳答案

感谢以上所有评论。我听从了 martijn 的建议并使用 timeit 运行了一个简单的测试。

使用我的数据得到的结果如下:

>>> timeit.timeit('passdict()',setup=setup,number=1000000)
0.1841774140484631
>>> timeit.timeit('unpack()',setup=setup,number=1000000)
0.43643336702371016
>>>

看起来 Cyphase 是正确的,如果我做这个“whoooole lot”只会有性能问题——解包比通过字典慢两倍,但在 1M 迭代中只花费 250 毫秒。对我来说,这可以忽略不计,因为我只处理一个函数中的 5-10 次调用。

关于python - 在 Python 中解包字典的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992424/

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