我正在尝试使用dict.get()
调用函数。
def foo():
print('foo')
def oof():
print('oof')
a = {'f': foo,
'o': oof}
a.get('f', 'None')
但它会返回object at 0x0...
,如果我调用foo()
和oof()
这样的函数,它会调用两者而不仅仅是请求的函数。
答案 0 :(得分:5)
您的字典值是函数。但是,您需要记住实际调用您的函数:
a.get('f', 'None')()
正如预期的那样,结果是打印出“foo”:
foo
注意括号()
表示我们要运行该函数。要了解发生了什么,您还可以查看type
的{{1}}:
a['f']
但是,上述方法是不可取的,因为如果您的密钥不存在,则无法调用print(type(a['f']))
<class 'function'>
。在这种情况下,您可以捕获None
:
KeyError
在实践中,您将拥有带有def call_func(dispatcher, key):
try:
dispatcher[key]()
except KeyError:
return 'None'
call_func(a, 'f')
语句的函数,以避免函数打印某些内容(并返回return
)或返回字符串时出现不一致。