鱼C论坛

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

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

[复制链接]
发表于 2023-10-7 20:12:57 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
@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
回复 支持 反对

使用道具 举报

发表于 2025-5-13 20:05:23 | 显示全部楼层
根据进入函数的学习,有点蒙了,特别是装饰器,各个函数之间的调用关系和执行的逻辑有些搞不清楚了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-5-13 20:08:13 | 显示全部楼层
import time


def delay(func):
    def call_func():
        time.sleep(2)
        func()

    return call_func


def fib():
    back1, back2 = 0, 1

    @delay
    def func():
        nonlocal back1, back2
        back1, back2 = back2, back1 + back2
        print(back1, end=' ')

    return func


def get_fib(n):
    f = fib()
    for i in range(n):
        f()
n = int(input("请输入需要获取的斐波那契数:"))
get_fib()

这个斐波那契数的函数的运行和调用逻辑 一直没搞明白!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-6-4 16:53:14 | 显示全部楼层
好难,平时想不到怎么用,加油学习吧-20250604
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-3 18:33:15 | 显示全部楼层
简单来说装饰起的作用就是:把它下面定义的函数作为装饰器名字的函数的参数,然后调用这个装饰器名字的函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-29 11:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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