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

能不能通俗地解释一下这节课学了个啥?

课中一直在说@用法,但是我一直没参透出@的作用和用法,大佬们讲讲这个@一般什么时候用,用在哪?

正在回答

3 回答

#定义装饰器函数log
def log(f): #f指代你要装饰的函数,如下文的factorial
    def fn(x):#这里就开始装饰了
        print('call ' + f.__name__ + '()...') #装饰器装饰的东西
        return f(x) #执行被装饰的函数(要装饰了才知道对应哪个函数)
    return fn #装饰完毕
 
#定义好了装饰器内容后,用@+装饰器名称就可以调用装饰器了
@log 
def factorial(n):
    return reduce(lambda x,y: x*y, range(1, n+1))

print(factorial(10))
#执行顺序为,先执行装饰器,后执行被装饰的函数,也就是print('call ' + f.__name__ + '()...') 后reduce(lambda x,y: x*y, range(1, n+1))
4 回复 有任何疑惑可以回复我~

这课程越到后面内容越跳越了,突然就出来一个新东西也不细讲,根本就不知道在说点什么

4 回复 有任何疑惑可以回复我~
#1

時頌望見

确实,后面太粗糙了,很多逻辑都没理
2023-12-14 回复 有任何疑惑可以回复我~

@是装饰符

以原文为例,先定义了一个log()函数。

把想要装饰函数factorial()上一行写上 @log,就完成了用log()函数里的内容去“”装饰“”factorial()函数里的内容。

通过@装饰符,可以修饰某函数,使其完成自己想要的额外的功能

6 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

能不能通俗地解释一下这节课学了个啥?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信