gpt4 book ai didi

python - 函数制作

转载 作者:太空狗 更新时间:2023-10-30 01:51:54 25 4
gpt4 key购买 nike

大家好,我是函数式编程的新手。我做的是

>>> g=lambda x:x*2
>>> f=g
>>> g=lambda x:f(f(x))
>>> g(9)
36

现在,它不是将 g 创建为非终止递归函数 - g(x) 被转换为一个新函数,该函数给出结果 g(g (x))

>>> f=g
>>> g=lambda x:f(f(x))
>>> f(8)
RuntimeError: maximum recursion depth exceeded

我预计 g 会根据 g(x ).为什么不呢?是否有可能创建一个新函数,以这种方式产生 g(g(g(...(g(x))....))) 一定次数的迭代?

最佳答案

当您第二次执行 f = g 时,f 变为 lambda x: f(x)。闭包是按名称创建的,而不是按值创建的。


借助辅助函数,这变得很容易:

def compose(f, g):
return lambda x: f(g(x))

square = lambda x:x*2
g = square
for i in xrange(4):
g = compose(g, square)

关于python - 函数制作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428560/

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