备忘录词典
thunk-dict的Python项目详细描述
重击指令
允许对可调用项进行延迟计算和记忆的词典。thunk dict的目的是作为一个方便的包装器,对潜在的计算代价高昂的调用进行懒散的评估。
用例
因为python急切地求值表达式,所以如果不首先求值这些调用,就不可能在字典中包含对函数的调用。为了模仿懒惰的评估,可以使用如下技巧:
dictionary={"key1":computationally_expensive_function}# Call the function later onresult=dictionary["key1"]()
或者,如果以后还想传入参数,
dictionary={"key1":lambda*args,**kwargs:computationally_expensive_function(*args,**kwargs)}# Call the function later onresult=dictionary["key1"]("blah",parameter=100)
但是,这种方法有两个问题:
- 它使词典及其条目的键入复杂化,并创建样板文件(如第二个示例中所示)。
- 重新访问需要再次调用计算开销较大的函数(即调用未被记录)
thunk dict试图解决这两个问题。
fromthunk_dictimportThunkDictdictionary=ThunkDict({"key1":computationally_expensive_function})# Get result from call via simple accessresult=dictionary["key1"]# Subsequent accesses use the memoized result.
对于不可压缩的条目,thunk dict的工作方式与常规dict类似。thunk dict还具有与常规python字典相同的api,这意味着您不必使用其包装器来牺牲任何东西。
功能
- 字典中方便的类似于thunk的行为
- 适用于使用dict注册的任何对象
- 非常低的开销
安装
来自PYPI
pip install thunk-dict
来自源分布
git clone https://github.com/kevalii/thunk-dict.git
cd https://github.com/kevalii/thunk-dict.git
pip install .