最新回答 / 磨牙在家里就不是
return func(*args) 理解分为2部,result=func(*args)和return result,这样一来,就使得闭包的返回值和原函数的返回值是一样的,如果你不关心返回值,怎么写都可以
2018-11-24
最新回答 / KNATO
returun返回的是一个值,不是函数return in_func返回的是in_func(),f()接收的是return in_func返回的值其实就是return in_func返回到func(89),func(89)把返回的值给到f() (可以这么理解吧
2018-07-03
最赞回答 / 爱编程and爱逻辑
装饰器好比一个服装店,小明到里面买了一件新衣服穿上出来了,小红到里面也买个一件新衣服穿上出来了,虽然都是在同一个服装店买的衣服,但是不能说穿上新衣服的小明就是穿上新衣服的小红哦
2018-01-10
最新回答 / 朱青1900
注意前面说的函数的属性问题,dec(my_sum)和dec(my_average)是不同的,传递的参数不同,此时函数的属性不同,相对于是一个封闭环境,my_sum会跟随内部函数,同理my_average也会跟随的,两次调用是不影响的。
2018-01-10
最赞回答 / HuffLeo
func(89)返回的是一个函数,并不是一个特定的值。只有用一个函数来接受 F= func(89)才可以,然后二次调用 F 函数才可以得到具体的数值
2017-09-13
最赞回答 / 慕标9241536
调用dec函数时返回的是内部函数in_dec的函数地址(不带参数返回的就是函数地址),直接返回函数地址是为了这个函数的可重用性,以便下一个具有同样性质的函数(例如my_average)也可以进行相同的判断(先执行in_dec里面的判断,再调用my_sum()函数或者my_average( )函数进行计算)带了参数值就代表正式调用这个函数。它执行逻辑是 调用dec函数-->返回in_dec地址-->自身就是in_dec了-->执行in_dec里的判断并返回sum()函数对*arg的处理结果...
2017-09-07
最新回答 / 慕粉2104286862
因为分数线不同,要编写不同的set_passline函数,但是各个set_passline()中用于判断是否及格的cmp()函数是一样的代码。用了闭包,也就是节省了编写比较函数cmp()的代码。也就是重用了cmp()比较函数的代码。至于你说的两个参数,是那么第二个参数传进来也要在比较时多写基于第二个参数的代码(在此琢磨一下),当n多个参数就写重复的n多次
2017-08-05