我正在使用Python中的词典,并使用以下方法搜索值:
my_dictionary_object.get("key")
众所周知,如果字典中缺少键,它将返回None
对象。
因此,为了节省额外的行数并使我的代码更有趣,我正在尝试:
def my_function():
'''do some calculations'''
return missing_value_from_dictionary
现在是有趣的部分,当我这样做的时候
my_dictionary_object.get("key", my_function())
不管键是否丢失,它都会执行函数,所以我想让我们去掉括号,然后我做了:
my_dictionary_object.get("key", my_function)
和(以防万一)
my_dictionary_object.get("key", lambda: my_function())
但是没有lambda的一个没有执行(因为它从未被调用过)同样的情况也发生在有lambda的一个。你知道吗
TL;DR
我的问题是,如果字典中有键,为什么要执行函数?
是我做错了什么,还是我错过了什么?你知道吗
在:
my_dictionary_object.get("key", my_function())
中,执行类似于:my_function()
。所以让我们调用函数,并使用返回值代替它。非常类似于:a = my_function()
,python将调用函数并将返回值放在适当的位置。你知道吗mydictionary_object.get(..)
。你知道吗换句话说,如果键不存在,
dictionary.get("key", default)
将只返回第二个参数。如果是lambda,则返回lambda。lambda是一个对象。注意,在.get("key", my_function())
中,my_function()
在技术上不是第二个参数。作为执行该函数的结果返回的结果值是第二个参数,希望它能解释错误的位置。你知道吗您要查找的内容实际上是在另一个名为^{} 的容器中捕获的。你知道吗
你要做的是:
发生的情况是,如果键(=x)不存在,
my_function
将在没有任何参数的情况下被调用,并且字典将使用函数针对键(=x)返回的值进行更新。比如:相关问题 更多 >
编程相关推荐