鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 小甲鱼

[知识点备忘] 第046讲:函数(VI)- 装饰器

[复制链接]
发表于 2023-10-7 20:12:57 | 显示全部楼层
@classmethod
def funA()

等价于
>>>funA = classmethod(funA)
>>>funA()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-2 22:08:23 | 显示全部楼层
def login(level):
    print("ff")
    def fun2(func):
        def fun3():
            func()
        return fun3
    return fun2

@login(level = 1)
def funA():
    print("gg")

   
ff
为什么在第一个和第二个函数之间加一句输出后,写完语法糖直接就输出了,而去掉那句print就会正常
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-13 10:55:06 | 显示全部楼层
有点没懂为啥视频那个例子结果是65,即便是从下往上,它会记住X的值吗,为啥呢,没理解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-20 11:52:19 | 显示全部楼层
本帖最后由 涉水鱼 于 2023-12-20 16:36 编辑

好难
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-1-10 08:27:41 | 显示全部楼层
请问为什么装饰器函数一定要是闭包函数呢?
如果装饰器不是闭包函数:
def call_time(func):
    start=
    func()
    stop=
    return print()

@call_time
def myfunc():

然后把设定改为加在myfunc()函数上的@call-time语法糖的实际意思是myfunc()=call_time(func),感觉好像也不影响使用,这是为什么呢,搞不太清楚
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-23 10:47:18 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-7-2 12:23:38 | 显示全部楼层
fishcyou 发表于 2022-5-2 19:01
装饰器可以实现在不修改原来代码的前提下增加新功能。

(通过将原来代码作为函数,传入装饰器,返回新的 ...

这里的(msg='A')不理解,为什么要给logger函数的msg参数赋值为‘A’呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-5 22:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表