python闭包和装饰


闭包:
闭包和装饰模式 相辅相成 def outter(fun): def inner(): print('123 执行inner') fun() print('789 执行inner') return inner def index(): print('我是index...') #()执行 没有括号:传递 引用 ind = outter(index) ind()
如图:
python闭包和装饰更简单: def outter(fun): def inner(): print('123 执行inner') fun() print('789 执行inner') return inner @outter def index(): print('我是index...') index() 如图:
python闭包和装饰
案例:海底捞饭店 def shucaipinpan(fun): def caidan(): print('蔬菜拼盘85') return fun()+85 return caidan def niurou(fun): def caidan(): print('内蒙古牛肉45') return fun()+45 return caidan def kele(fun): def caidan(): print('可乐...5..') return fun()+5 return caidan @kele @niurou @shucaipinpan def guodi(): print('菌汤锅 ..25..') return 25 money = guodi() print('总消费:',money) 如图:
python闭包和装饰
内部带参:
案例1.
first = [] def outter(): def inner(y): lam=lambda x,y:x+y for x in range(1,5): first.append(lam(x,y)) return inner out = outter() out(9) for y in first: print(y)
如图:
python闭包和装饰
2.
first = [] def outter(fun): def inner(y): # lam=lambda x,y:x+y for x in range(1,5): first.append(fun(x,y)) return inner def suan(x,y): return x*y out = outter(suan) out(9) for i in first: print(i) 如图:
python闭包和装饰python3里面的特性:
eval:转换 x = int(input("请输入第一个数字:")) y = int(input("请输入第二个数字:")) fun = input("请输入一个函数:") #输入一个匿名函数如:lambda x,y:x+y fun = eval(fun) ret = fun(x,y) print(ret)
如图:

python闭包和装饰

完毕!