Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过dict.get()调用函数_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 通过dict.get()调用函数

Python 通过dict.get()调用函数,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我正在尝试使用dict.get()调用函数 但是它返回0x0处的对象…,如果我调用像foo()和oof()这样的函数,它将调用这两个函数,而不仅仅是请求的函数。您的字典值就是函数。但是,您需要记住实际调用函数: a.get('f', 'None')() 正如预期的那样,结果是“foo”被打印出来: 请注意,括号()表示要运行该函数。要了解发生了什么,您还可以检查a['f']的类型: print(type(a['f'])) <class 'function'> 实际上,您将使用带

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


但是它返回0x0处的
对象…
,如果我调用像
foo()
oof()
这样的函数,它将调用这两个函数,而不仅仅是请求的函数。

您的字典值就是函数。但是,您需要记住实际调用函数:

a.get('f', 'None')()
正如预期的那样,结果是“foo”被打印出来:

请注意,括号
()
表示要运行该函数。要了解发生了什么,您还可以检查
a['f']
类型:

print(type(a['f']))

<class 'function'>

实际上,您将使用带有
return
语句的函数,以避免函数打印内容(并返回
None
)或返回字符串的不一致性。

您的字典值是函数。但是,您需要记住实际调用函数:

a.get('f', 'None')()
正如预期的那样,结果是“foo”被打印出来:

请注意,括号
()
表示要运行该函数。要了解发生了什么,您还可以检查
a['f']
类型:

print(type(a['f']))

<class 'function'>

在实践中,您将使用带有
return
语句的函数,以避免函数打印内容(并返回
None
)或返回字符串的不一致性。

只需小心返回
“None”
的情况,或者只需执行
a.get('f',lambda:'None')()
。但是我认为
KeyError
处理更具可读性,即使有点冗长。只要小心
返回“None”
的情况,或者您可以只执行
a.get('f',lambda:'None')()
。但是我认为
KeyError
处理更具可读性,即使更详细一点。您希望
None
案例会发生什么?什么都没有或抛出错误?@dawg是为了防止没有名为“f”的键,我知道这是默认值。我的问题是:如果没有名为
f
的函数,您希望发生什么?一个停止程序的错误,或者什么都没有?什么都没有…您希望
None
案例会发生什么?什么都没有或抛出错误?@dawg是为了防止没有名为“f”的键,我知道这是默认值。我的问题是:如果没有名为
f
的函数,您希望发生什么?一个停止程序的错误或者什么都没有?什么都没有。。。
def call_func(dispatcher, key):
    try:
        dispatcher[key]()
    except KeyError:
        return 'None'

call_func(a, 'f')