作为定义,我知道
non-pure functions have some input (their arguments) and return some output (the result of applying them) [...] and in addition [...] can also generate side effects, which make some change to the state of interpreter or computer.
(引自Building Abstractions with Functions (pdf))。
例如:print(2)
函数除了作为副作用打印函数(不是python解释器)本身打印值之外,不返回任何内容(None
)。
我的问题是:
在上面的定义中,我不理解“改变解释器或计算机的状态”的含义,这是什么意思?
如果函数满足两个重要的额外属性,我们将其称为pure函数:
任何影响局部变量状态以外的任何状态的函数都是非纯函数。
更改全局是非纯的,例如:
函数
foo
改变了some_list
的状态;因此它是非纯的。一个纯粹的版本是:这里
foo
只通过接受输入参数并生成输出值来影响状态。原始的some_list
对象也没有改变,而是返回了一个新对象。纯函数还必须生成仅依赖于输入的输出;基于外部状态生成输入的函数也不是纯函数。
time.time()
不是纯的,它返回一个基于时钟状态的值,该时钟不是函数的输入。相关问题 更多 >
编程相关推荐