韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > Python常见问题 > python闭包函数怎么用

python闭包函数怎么用

头像

silencement

2019-10-25 11:13:392434浏览 · 0收藏 · 0评论

闭包,又称闭包函数或者闭合函数,类似于嵌套函数,不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数。一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行调用。

例如,计算一个数的 n 次幂,用闭包可以写成下面的代码:

#闭包函数,其中 exponent 称为自由变量
def nth_power(exponent):
    def exponent_of(base):
        return base ** exponent
    return exponent_of # 返回值是 exponent_of 函数
square = nth_power(2) # 计算一个数的平方
cube = nth_power(3) # 计算一个数的立方
print(square(2))  # 计算 2 的平方
print(cube(2)) # 计算 2 的立方

运行结果为:

4
8

在上面程序中,外部函数 nth_power() 的返回值是函数 exponent_of(),而不是一个具体的数值。

需要注意的是,在执行完 square = nth_power(2) 和 cube = nth_power(3) 后,外部函数 nth_power() 的参数 exponent 会和内部函数 exponent_of 一起赋值给 squre 和 cube,这样在之后调用 square(2) 或者 cube(2) 时,程序就能顺利地输出结果,而不会报错说参数 exponent 没有定义。

看到这里,读者可能会问,为什么要闭包呢?上面的程序,完全可以写成下面的形式:

def nth_power_rewrite(base, exponent):
    return base ** exponent

上面程序确实可以实现相同的功能,不过使用闭包,可以让程序变得更简洁易读。设想一下,比如需要计算很多个数的平方,那么读者觉得写成下面哪一种形式更好呢?

# 不使用闭包
res1 = nth_power_rewrite(base1, 2)
res2 = nth_power_rewrite(base2, 2)
res3 = nth_power_rewrite(base3, 2)
# 使用闭包
square = nth_power(2)
res1 = square(base1)
res2 = square(base2)
res3 = square(base3)

显然第二种方式表达更为简洁,在每次调用函数时,都可以少输入一个参数。

其次,和缩减嵌套函数的优点类似,函数开头需要做一些额外工作,当需要多次调用该函数时,如果将那些额外工作的代码放在外部函数,就可以减少多次调用导致的不必要开销,提高程序的运行效率。更多学习内容,请点击Python学习网

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

韩剧《我的瑜伽教练》| 器材室轮-J-(4)| 《黏糊糊的你》免费观看| 男按摩师舌头伸进去了SPA漫画| 蜜桃成时熟| 女士穿紧身裸体开裆光滑皮裤| 电影《老公上班后》免费观看| AAA成人片爽久爽久爽| 亲嘴扔衣服的视频| 陌陌影视在线观看高清完整版| 女人高潮后要禁欲多久才能恢复| 9853| 诡秘之主 小说| 完美上司短剧免费完整版| 双飞娘俩国语版电视剧免费观看| 《湿点》未增减板相似| 《出差的日子》叶爱| 美女两个球球抖动抓球球视频| 《丰满的女邻居》播放| 女性左腿又开腿肚子中间疼视频| 放荡的女兵伦理2| 成全电影免费观看完整在线播放高.. | 在线观看免费观看在线NBA| 臭小子快拔出来危险期会怀孕| 曾鲁射击免费播放电视剧全部 | 按摩师把我添高潮了6次| 女人大阴唇夹缝是阴虚还是阳虚| 小蜜桃免费观看高清电视剧| 爸妈离婚女儿成爸爸的女人| 男人添女人荫道口视频| 边吃奶边扭身体哼唧怎么回事| 俄罗斯大扔子视频观看| 《出差的日子》叶爱| 器材室轮-J-(4)| 天天挨龠中度过BY浮白曲讲什么| 小妈爱上继子免费观看电视剧| 校花被群JAN又粗又大H漫画| 未满十八岁请自动离开的英语| 榨精病栋| 吃瓜黑料反差黑料爆料董赤赤| 门卫老头吮她的花蒂的主演是谁