加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:46:16 所属栏目:Python 来源:网络整理
导读:或者更广泛的问题:如何在python中创建递归函数,并且在更改其名称时,只需要在声明中进行更改? 最佳答案 我发现了一个简单,有效的解决方案 from functools import wrapsdef recfun(f): @wraps(f) def _f(*a,**kwa): return f(_f,*a,**kwa) return _f@recfun#

或者更广泛的问题:如何在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读