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])'