鱼C论坛

 找回密码
 立即注册
查看: 2952|回复: 3

学装饰器部分听不懂怎么办

[复制链接]
发表于 2020-11-9 15:58:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在课堂上学习了装饰器结果完全听不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-9 16:29:47 | 显示全部楼层
动手
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-9 16:35:38 | 显示全部楼层
本帖最后由 笨鸟学飞 于 2020-11-9 16:38 编辑

'''希望我的这个学习笔记可以帮助你'''

def test(func):
    func()       #3..调用fun()------10..返回后继续执行
    print "call test"  #11..打印'call test'

def test1(f):
    f()               #6..调用fun1()
    print "call test1"  #7..打印'call test1'------8..随后返回上一层调用,即5..

def main():
    @test      #2..调用test(fun).  =====这个修饰符的作用我是这么理解的,调用a()函数,紧后的函数对象作为参数传入执行
    def fun():
        print "call fun"   #4..打印‘call fun’
        @test1              #5..调用test1(fun1)------9..返回后,返回上一层调用,即3..
        def fun1():
            print "call fun1"  #6..打印‘call fun1’

main()           #1..调用main()函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-9 16:51:43 | 显示全部楼层

python的装饰器不就是把方法作为参数么,很好理解啊
#coding=utf-8
    # -*- coding=utf-8 -*- 
    from functools import wraps   
    def my_decorator(func):
        @wraps(func)                        #消除装饰器影响,调用被装饰函数example时,方法对象类型不再是wapper(),变成example(),和不被装饰时的类型一样
        def wrapper(*args, **kwargs):        #调用时把传入参数组成元组arg,和kwargs
            '''decorator'''                        #使用arg[0]获取第一个参数arg[1]获取第2个参数...,kwargs[XX]使用关键字XX获取参数
            print('Calling decorated function...')
            return func(*args, **kwargs)        #使用将元组args和字典分解成各个参数传入方法func()
        return wrapper   
    @my_decorator 
    def example():
        """Docstring""" 
        print('Called example function')
    print(example.__name__, example.__doc__)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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