一、@函数修饰器
def auth(fn):
def auth_fn(*args):
print('===模拟权限检查===')
fn(*args)#回调被修饰目标函数
return auth_fn
@auth
def test(a, b):
print('执行test函数')
test(20, 15)
执行流程是:①先执行权限检查;②回调被修饰的目标函数-一简单
来说, auth_fn 函数就为被修饰函数添加了一个权限检查的功能。
二、类命名空间
global_fn = lambda p: print('p参数:', p)
class Item:
#自动绑定类的第一个参数self
cate_fn = lambda p: print('类中p参数:', p)
global_fn(10)
item = Item()
item.cate_fn()
在全局空间内定义的lambda 表达式就相当于一个普通函数,因此程序使用调用函数的方式来调用该lambda 表达式,并显式地为第一个参数绑定参数值;对于在类命名空间内定义的l ambda 表达式,则相当于在该类命名空间中定义了一个函数,这个函数就变成了实例方法,因此程序必须使用调用方法的方式来调用该lambda 表达式, Python 同
样会为该方法的第二个参数(相当于se l f 参数)绑定参数值。