基础+装饰器内容
递归特性
# 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 time user,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("33[32;1m HI boy 33[0m") func(*args,**kwargs) else: exit("failed") elif(auth_type=="ldap"): func() return wrapper return 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()