闭包:
特点:
1.函数里有函数
2.内函数一定用到外函数变量
3.返回值一定是内函数
一定记下来
#电子秤
#能够计算:
价格=(毛重-包装重量)*单价
包装重量:0.1斤
价格=(毛重-0.1)*单价
苹果:3元/斤
香蕉:5元/斤
def price(weight,unitPrice):return (weight-0.1)*unitPriceapple=price(10.1,3)print(apple)banana=price(10.1,5)print(banana)
闭包
def price(unitPrice):def computer(weight): return (weight-0.1)*unitPricereturn computerapple=price(3)# 不执行,等价于返回值函数computerprint(apple(10.1))banana=price(5)print(banana(10.1))
练习:
构造一个闭包程序,能够根据需要计算平方、立方。
def jisuan(x): def a(y): return y**x return apingfang=jisuan(2) #2是jisuan的参数变量print(pingfang(5))def jisuan(x): def b(y): return y**x return blifang=jisuan(3)print(lifang(9))
装饰器(修饰器):
(有时间详细讲解一下)
设计一个装饰器,能够计算圆面积、正方形面积。
import mathdef jisuan(mianji): def kkk(*args,**kwargs): print("====面积====") x=mianji(*args,**kwargs) return x return kkk@jisuandef mianji1(r): return math.pi*r**2@jisuandef mianji2(d): return d**2print(mianji1(3))print(mianji2(5))
运行结果:
面积
28.274333882308138
面积
25