p116-

递归

  • python最大递归深度是 1000
  • 递归不是万能,递归比循环更占用内存
  • 可以设置最大递归深度
  • sys.setrecursionlimit(100)
  • 递归函数必须要能停止
#4、计算斐波那契数列
def fbnq(n):
    if n==1:return 1
    elif n==2:return 1
    else:return fbnq(n-1)+fbnq(n-2)
#1、计算阶乘  5!=5*4*3*2*1
def jc(count):
    if count==1:return 1
    else:
        return count*jc(count-1)
# print(jc(10)) #3628800

带参数的装饰器

  • 装饰器可以做登录验证,log写日志,如果要根据不同的函数写到不同的文件中就需要做带参数的装饰器
import time
def logger(path): #在log 外层再加一个函数logger 带参数,返回原先的装饰器
    def log(func):
        def inner(*args,**kwargs):
            with open(path,encoding='utf-8',mode='a') as f:
                f.write(f'【{time.strftime("%Y-%m-%d %H:%M:%S")}】 执行了函数{func.__name__}\n')
            ret = func(*args,**kwargs)
            return ret
        return inner
    return log
@logger('log.log') #输入参数
def func(*args):
    pass
#这个规则其中 (?P<sub>[^\d]) 适用于python
regex ='[1-9]\d{3}(?P<sub>[^\d])(1[0-2]|0?[1-9])(?P=sub)([1-2]\d|3[01]|0?[1-9])'
posted on 2020-07-23 20:03  94小渣渣  阅读(88)  评论(0编辑  收藏  举报