鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[扩展阅读] Python 函数修饰符(装饰器)的使用

  [复制链接]
发表于 2020-8-16 22:28:17 | 显示全部楼层
学习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-20 19:25:22 | 显示全部楼层
什么玩意啊,这真的是零基础学Python吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-20 20:13:44 | 显示全部楼层
完全没看懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-20 21:59:59 | 显示全部楼层
不太懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-23 23:38:21 | 显示全部楼层
我看了两本书, 再加这篇文章, 依然没看懂!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 02:33:36 | 显示全部楼层
你这篇改改吧 我感觉一团糟@小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-3 17:39:52 | 显示全部楼层
本帖最后由 jack_xy 于 2020-9-3 18:08 编辑

    其实就是python程序解释程序的一个代码置换功能嘛,这篇文章有点绕
   (1)  定义某个类AClass() 或函数init_function()
   
      
class AClass(object):
                 def __init__(self,myfun):
                            self.f =myfun
                def __call__(self):
                           ....
                           self.f()
                           ....
                           return xxxx
         或者
      
 def init_function(myfun):
               def  call():
                       .....
                       myfun()
                       .....
                       return xxxx
                return call
               

   (2)@某个类名AClass  或者 @某个函数名init_function

   (3) 紧跟着定义(2)中类或者函数的参数,这个参数一般也是个函数指针myfun()
   
@AClass
      def myfun():
            ....
            .....
            return aaaaa
     或者
   
@init_function
      def myfun():
            ....
            .....
            return aaaaa

(4)然后在程序代码段中调用这个参数函数myfun()时,编译程序实际上是调用(2)中这个类AClass(myfun).__call__()或者函数init_function(myfun)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-11 22:05:19 | 显示全部楼层
看了几天了,终于看懂了,不容易啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-12 15:20:01 | 显示全部楼层
Py3.85 clock()被删掉了可以另用time.perf_counter() 或 time.process_time() 方法替代。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2020-9-23 13:48:27 | 显示全部楼层
看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-11 15:21:56 | 显示全部楼层
倒数第二个例子的缩进有问题啊
所以在类定义的话是在类里面还是在类外面呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 22:24:20 | 显示全部楼层
没看懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 12:38:45 | 显示全部楼层
这太坑了吧,完全没法理解啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-3 10:33:49 | 显示全部楼层
第二段代码:先运行第一行导入模块,函数定义先不看,运行第21行,打印f(),这个函数内容其实被timeslong()的return给call()了,所以打印的不是修饰符里面的函数,而是call()函数,再看call()中5-6行没问题,带7行的时候发现有个func,这是个什么呢?这是f()的工具名字,所以实际上是运行的f()的内容然后在运行8-10,所以正确运行循序为1,21,3,13,11,4,5,6,(14-19),8,9,10.

相当于一种内嵌函数,个人理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 08:12:36 | 显示全部楼层
(⊙_⊙)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-2 12:09:17 | 显示全部楼层
小甲鱼阿。。看不懂阿。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-11 11:02:49 | 显示全部楼层
这一讲感觉很不清楚哎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-10 13:47:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-2 22:18:42 | 显示全部楼层
这篇搞得不好,新手很容易看不懂,推荐新手先去CSDN上查看装饰器的说明再回来看这篇文章
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 19:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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