为了账号安全,请及时绑定邮箱和手机立即绑定

python装饰器

难度初级
时长43分
学习人数
综合评分9.67
219人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
id打印出来的在哪里?怕不是我眼睛坏了?
讲的很差!!
看完是有用的,能明白装饰器的原理,感谢
装饰函数一定要写在被装饰函数之前,否则会报错,亲测。

已采纳回答 / 一只_废喵
Python pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。当你在编写一个程序时,执行语句部分思路还没有完成,这时你可以用pass语句来占位,也可以当做是一个标记
你没有被误导,你怎么知道别人会被误导?莫名其妙的指责,那你怎么不做视频
讲的挺好的,原理清楚就行,关心那么多细节干啥
一开始没反应过来

最新回答 / 慕粉2104286862
因为分数线不同,要编写不同的set_passline函数,但是各个set_passline()中用于判断是否及格的cmp()函数是一样的代码。用了闭包,也就是节省了编写比较函数cmp()的代码。也就是重用了cmp()比较函数的代码。至于你说的两个参数,是那么第二个参数传进来也要在比较时多写基于第二个参数的代码(在此琢磨一下),当n多个参数就写重复的n多次
一开始讲闭包的时候,变量名确实让人容易混淆,但后面看到装饰器的时候,就知道了标准就是这样的,从讲课的角度看,这一点没有分亲,其他讲的很清楚。
那么也就不难理解f_100 = set_passline(60)之后
其实f_100就是cmp这个函数当passline=60时的状态了
本质上f_100就是一个函数,所以后续的f_100(89)其实就是cmp(89)


还有我想要表达的一点,每个人的基础不一样,所以有的人可能听不太明白老师讲的东西,这很正常,如果我们能帮助他们理解,那再好不过;就算不能帮助他们,请不要贬低他们
帮大家整理一下思路:

首先注意一下这个return是在set_passline函数里而不是cmp函数里的
那么这个return是在执行了set_passline(60)或set_passline(90)时进行返回的

其次这个return的返回值是cmp而不是cmp(89)
那么就表示这个return返回的其实不是一个数值,而是整个cmp这个函数
也就是当执行了set_passline(60)的时候,返回的是
def cmp(val):
if val >= 60:
print('Pass')
else:
print('Failed')
这个函数
函数返回一个函数,实例化外部函数再借用本身返回函数 通过参数 进一步实现 调用,妙
这一节就有点理解了
就是个就近原则,老师讲的有点复杂了把
原来之所以也用my_sum而不另外换个函数名是为了和用语法糖抱持一致,用了语法糖@装饰后也是原函数名,不过添加了装饰效果。
课程须知
您至少具备Python基础知识
老师告诉你能学到什么?
1.函数作用域及关系。 2.闭包的使用。 3.装饰器的概念及使用。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消