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

前端之家收集整理的这篇文章主要介绍了Python – 可以在不明确使用名称的情况下调用自身吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

  1. from functools import wraps
  2. def recfun(f):
  3. @wraps(f)
  4. def _f(*a,**kwa): return f(_f,*a,**kwa)
  5. return _f
  6. @recfun
  7. # it's a decorator,so a separate class+method don't need to be defined
  8. # for each function and the class does not need to be instantiated,# as with Alex Hall's answer
  9. def fact(self,n):
  10. if n > 0:
  11. return n * self(n-1) # doesn't need to be self(self,n-1),# as with lkraider's answer
  12. else:
  13. return 1
  14. print(fact(10)) # works,as opposed to dursk's answer

猜你在找的Python相关文章