gpt4 book ai didi

python - 字典值作为访问键时要调用的函数,不使用 "()"

转载 作者:太空狗 更新时间:2023-10-29 18:01:18 25 4
gpt4 key购买 nike

我有一个字典,它的值有时是字符串,有时是函数。对于作为函数的值,有没有一种方法可以在访问键时无需显式键入 () 来执行函数?

例子:

d = {1: "A", 2: "B", 3: fn_1}
d[3]() # To run function

我要:

d = {1: "A", 2: "B", 3: magic(fn_1)}
d[3] # To run function

最佳答案

另一种可能的解决方案是创建一个实现此行为的自定义字典对象:

>>> class CallableDict(dict):
... def __getitem__(self, key):
... val = super().__getitem__(key)
... if callable(val):
... return val()
... return val
...
>>>
>>> d = CallableDict({1: "A", 2: "B", 3: lambda: print('run')})
>>> d[1]
'A'
>>> d[3]
run

A perhaps more idiomatic solution将使用 try/except:

def __getitem__(self, key):
val = super().__getitem__(key)
try:
return val()
except TypeError:
return val

但是请注意,上面的方法实际上是为了完整性。我不推荐使用它。 As pointed out in the comments ,它会屏蔽函数引发的 TypeError。您可以测试 TypeError 的确切内容,但此时最好使用 LBYL 样式。

关于python - 字典值作为访问键时要调用的函数,不使用 "()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106779/

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