python中闭包的理解与实验笔记

闭包是函数嵌套,内部函数引用外部函数变量,又返回了那个内部函数

def funcation_out(num1):
    print('外部函数开始,他传了一个变量%d' % num1)

    def funcation_in(num2):
        result = num1 + num2
        print('内部函数开始了,他返回一个变量%d' % result)
        return result

    return funcation_in


# 把外部函数的返回函数赋值给变量infunc 这时infunc变成一个函数
infunc = funcation_out(10)

# 打印结果,发现10+20  调用外部函数传10,内部函数传20此时内部函数计结果返回
print(infunc(20))

# 再次调用返回的函数
print(infunc(50))

闭包在函数式开发过程中使用,可根据外部作用域的局部变量得到不同结果
使用案例:求一个点到其它点之间的距离
不使用闭包完成需要四个参数
计算两点之间的距离需要用到pow计算一个数的平方,sqrt开平方,这两个函数在math数学库中

def disbtwpoint(x1, y1, x2, y2):
    return sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2))

print(disbtwpoint(0, 0,10,10))  # 14.142135623730951
print(disbtwpoint(0, 0,20,20))  # 14.142135623730951


# 使用闭包算一次两点间距离
def disout(x1,y1):
    def disin(x2,y2):
        return sqrt(pow(x1-x2,2)+pow(y1-y2,2))
    return disin

# 闭包调用
getdis=disout(0,0)
# 获取点10,10到坐标0,0的距离
print(getdis(10,10))
# 此时可再次计算另外一个坐标与0,0间的距离
print(getdis(20,20))
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值