基础+装饰器内容
递归特性
# 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",""
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 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()