- 闭包:
- 函数嵌套
- 内层函数可以使用外层函数传入的参数
- 外层函数返回内层函数的引用
def line(k,b):
def inner(x):
print("y=%d" % (k*x + b))
return inner
line1_1 = line(1,1)
line1_1(1)
line1_1(2)
2
3
- 装饰器
可以看到,装饰器函数并没有修改原函数的功能,只是进行了扩展。
# 用户登录购物车
def wrapper(func):
def inner(username,*passwd):
if username and passwd:
if passwd == (123456,):
func()
print("用户名是: %s,密码是: %s" % (username, *passwd))
else:
return
else:
print("请登录")
return inner
@wrapper #等同于login = wrapper(login)
def login():
print("用户登录购物车成功")
login("老王")
login("老王",123456)
请登录
用户登录购物车成功
用户名是: 老王,密码是: 123456
装饰器有以下几大用途:
- 引入日志
- 函数执行时间统计
- 执行函数前预备处理
- 执行函数后清理功能
- 权限校验等场景
- 缓存