Python – 可以在不明确使用名称的情况下调用自身吗?

或者更广泛的问题:如何在python中创建递归函数,并且在更改其名称时,只需要在声明中进行更改?

最佳答案
我发现了一个简单,有效的解决方

from functools import wraps

def recfun(f):
    @wraps(f)
    def _f(*a,**kwa): return f(_f,*a,**kwa)
    return _f

@recfun
# it's a decorator,so a separate class+method don't need to be defined
# for each function and the class does not need to be instantiated,# as with Alex Hall's answer
def fact(self,n):
    if n > 0:
        return n * self(n-1)  # doesn't need to be self(self,n-1),# as with lkraider's answer
    else:
        return 1

print(fact(10))  # works,as opposed to dursk's answer

相关文章

在前一篇博客中我们介绍了加侧旋的乒乓球弧圈技术的模拟,本...
在近期conda的版本更新中,有可能会删除路径下的_sysconfigd...
本文主要展示了一些lambda表达式的使用示例,通过这些示例,...
本文通过对比Jax和Numpy计算Normalized Hamming Distance的过...
我们知道GPU加速在可并行化程度比较高的算法中,能够发挥出比...
Numpy这个库在Python编程中非常的常用,不仅在性能上补足了P...