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



