在查看代码时,有时我会看到诸如lazyLoad
,lazyActivation
,lazyInit
,LazyValue
之类的单词。我目前正在编码Java,并且许多来源都指定了Java中的大多数命名约定,但并不懒惰。所以我想知道“懒惰/懒惰”是否是惯例,这意味着什么。
答案 0 :(得分:1)
简而言之,“懒惰”意味着推迟一项操作,直到有必要为止。如果从未使用该操作的结果,则该操作将永远不会执行,从而节省了一些工作。在pseudo-real Python中想到的一个任意示例是:
import gettext_lazy
class Foo:
bar = Baz(name=gettext_lazy('Baz label'))
这定义了一个类和该类中具有名称的字段。该名称通过gettext本地化为不同的语言。 gettext需要加载翻译文件,将其解析到内存等中。如果从未在任何地方使用此名称(例如print(Foo.bar.name)
),那么加载文件的所有工作都将被浪费。另外,在此类定义时,可能尚不确定,以后我们将使用哪种语言环境来输出名称。
由于这两个原因,实际的评估和本地化将推迟到某个时候,直到实际上有必要打印该名称为止。
您经常会在infinite lists等各种语言中找到一些更抽象的示例,您仍可以对其进行迭代,因为它们直到(不存在)结束时才进行评估,但这是一个非常实际的示例