gpt4 book ai didi

python - 什么是 Python 中的非纯函数?

转载 作者:太空狗 更新时间:2023-10-29 20:38:00 25 4
gpt4 key购买 nike

作为定义,我了解到,

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) 函数不返回任何内容 (None) 作为副作用 print 函数(不是 Python 解释器)本身打印值。

在上面的定义中,我没有理解'改变解释器或计算机的状态'的意思。这是什么意思?

最佳答案

任何影响除局部变量之外的任何状态的函数都是非纯函数。

改变一个全局是非纯的,例如:

some_list = []

def foo(bar):
some_list.append(bar)

foo('baz')

函数foo改变了some_list的状态;因此它是不纯净的。一个纯粹的版本是:

def foo(bar, lst):
return lst + [bar]

some_list = []
now_list = foo('baz', some_list)

此处 foo 仅通过获取输入参数并生成输出值来影响状态。原始的 some_list 对象也没有发生变化,而是返回了一个新对象。

纯函数还必须产生依赖于输入的输出;基于外部状态产生输入的函数也不是纯粹的。 time.time() 不是纯粹的,它返回一个基于时钟状态的值,这不是函数的输入。

关于python - 什么是 Python 中的非纯函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22733219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com