基础+装饰器内容
递归特性
# 1.必须有一个明确的结束条件
# 2.每次进入更深一层递归时,问题规模相比上次递归应有所减少
# 3.递归效率不高
def run(n):print(n)if int(n/2)>0:return run(n / 2)print("-->",n) run(10)
=============================================================
局部变量与全局变量知识
1.全局变量中 数字/字符串不能在函数中修改 列表和字典可以修改
names=["xiao","mibg","ming"] def change():names[0]="cf"print(names) change() print(names)
==============================================================
函数即”变量“! (函数名-代表函数地址 || 函数名()-代表调用函数)
高阶函数
1 把一个函数名当作实参传给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能)
2 返回值中包含函数名(不修改函数的调用方式)
==============================================================
装饰器
高级函数+嵌套函数==>装饰器 #嵌套函数-函数套着函数
# 定义:本质是函数,(装饰其他函数)为其他函数添加附加功能
# 原则: 1.不能修改被装饰的函数的源代码
# 2.不能修改被装饰的函数的调用方式
import timeuser,word="cf","123" def auth(auth_type): print("auth_type",auth_type)def out_wrapper(func): def wrapper(*args,**kwargs):if(auth_type=="local"):usename=input("usename:").strip()psword= input("psword:").strip()if(user==usename and psword==word):print("\033[32;1m HI boy \033[0m")func(*args,**kwargs)else:exit("failed")elif(auth_type=="ldap"):func()return wrapperreturn out_wrapper def index():print("index")@auth(auth_type="local") #home=auth(local)==>wrapper() def home():print("home") @auth(auth_type="ldap") def bbs():print("bbs")index() home() bbs()