【发布时间】:2018-02-16 19:23:01
【问题描述】:
我有一个字典,它的值有时是字符串,有时是函数。对于作为函数的值,是否有一种方法可以在访问键时不显式键入 () 来执行函数?
例子:
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
【问题讨论】:
-
为什么没有
()?不要在纽扣周围织毛衣…… -
不要这样做。
Explicit is better than implicit。您代码中的含义是查找一个函数并调用它;所以代码应该看起来像你正在这样做。顺便说一句,混合这样的类型是个坏主意。你需要先检查你是否有一个字符串(因为你不能调用字符串),这会让你的生活变得更加艰难。 -
... 但仔细想想,听起来您确实有一个 design 问题,并且应该提出一个更能反映您真正想做的问题。即,您为什么首先拥有这本词典?
-
听起来你应该调用一些函数
some_func(3),而不是写d[3],如果该值是可调用的,则该函数应该索引字典并调用该值。
标签: python python-2.7 function dictionary callback