通过dict.get()调用一个函数

时间:2018-06-13 21:33:02

标签: python python-3.x dictionary

我正在尝试使用dict.get()调用函数。

def foo():
    print('foo')

def oof():
    print('oof')

a = {'f': foo,
     'o': oof}

a.get('f', 'None')

但它会返回object at 0x0...,如果我调用foo()oof()这样的函数,它会调用两者而不仅仅是请求的函数。

1 个答案:

答案 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)或返回字符串时出现不一致。