在Python 3中,给定公开&私人职能,如下:
def my_public_function(a, b, c) -> int:
rv = _my_private_function(a, b, c)
return rv
def _my_private_function(a, b, c) -> int:
return a + b + c
如果我想使用functools.lru_cache
对此进行优化,我最好在公共功能或私有功能上执行此操作吗?
我的直觉是公共功能,因此它会尽早缓存并返回而不会触及任何其他内容。
from functools import lru_cache
@lru_cache()
def my_public_function...
是否有任何设计模式或其他设计原则建议在@lru_cache()
上使用_my_private_function
?
答案 0 :(得分:1)
通过在公共函数中处理这个来节省时间(函数调用和2个添加)。在python中,并不存在" private"功能。约会以_开头,告诉别人远离,但没有特定的语言。所以它对任何调用函数都没有影响,包括lru_cache。
答案 1 :(得分:1)
对此没有通用的答案,因为基本上没有选择放置缓存的位置无效的情况。如果是这样的情况,请将其放在公共函数上以跳过额外的函数调用以及公共函数必须执行的任何其他设置工作。但那只是永远不会出现。相反,它会像:
等等。