鱼C论坛

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

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

  [复制链接]
发表于 2019-4-27 10:28:42 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
@classmethod
def print_hello(cls):
    print("Hello")

这里需要缩进
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-28 08:01:09 | 显示全部楼层
本帖最后由 花椒壹拾伍 于 2019-4-28 08:02 编辑

例子里面有点没解释清楚,初学者可能半天摸不着头脑,我来说说我的理解,帖子里的这段代码:
  1. import time

  2. def timeslong(func):
  3.     def call():
  4.         start = time.clock()
  5.         print("It's time starting ! ")
  6.         func()
  7.         print("It's time ending ! ")
  8.         end = time.clock()
  9.         return "It's used : %s ." % (end - start)
  10.     return call

  11. @timeslong
  12. def f():
  13.     y = 0
  14.     for i in range(10):
  15.         y = y + i + 1
  16.         print(y)
  17.     return y

  18. print(f())
复制代码


可以等价替换为以下代码:
  1. import time

  2. def timeslong(func):
  3.     def call():
  4.         start = time.clock()
  5.         print("It's time starting ! ")
  6.         func()
  7.         print("It's time ending ! ")
  8.         end = time.clock()
  9.         return "It's used : %s ." % (end - start)
  10.     return call

  11. def f():
  12.     y = 0
  13.     for i in range(10):
  14.         y = y + i + 1
  15.         print(y)
  16.     return y

  17. f = timeslong(f)
  18. print(f())
复制代码



是不是清晰多了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 18:03:11 | 显示全部楼层
很多视频外的资料  自己看 看不懂  还是要放视频里讲才行啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-30 15:49:03 | 显示全部楼层
第3段代码,
少了import time
前面class定义的缩进不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-2 11:03:13 | 显示全部楼层
我也表示,学完感觉云里雾里的没懂!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-9 23:30:36 | 显示全部楼层
这个是老板的。。。新版有错
Warning (from warnings module):
  File "D:/python小代码/csxiushifu.py", line 9
    end = time.clock()
DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-13 09:39:57 | 显示全部楼层
学习
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-6-21 21:22:48 | 显示全部楼层
关于修饰符 我觉得这个网站讲得很清楚
https://foofish.net/python-decorator.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-6-21 21:23:53 | 显示全部楼层
我觉得这个网站讲得很清楚
https://foofish.net/python-decorator.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-20 09:02:19 | 显示全部楼层
@小甲鱼 修饰符来源的第三段代码,缩进好像有点毛病吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-20 09:12:34 | 显示全部楼层
阴阳神万物主 发表于 2019-7-20 09:02
@小甲鱼 修饰符来源的第三段代码,缩进好像有点毛病吧?

然后,我实际跑了一遍程序,发现:内置修饰符的那个示例代码,缩进也有毛病!!!!
直接复制过去:

错误示范

错误示范

改一下缩进:

正常输出

正常输出


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-7-28 12:49:31 | 显示全部楼层
没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-9 13:03:40 | 显示全部楼层
过54321 发表于 2019-6-9 23:30
这个是老板的。。。新版有错
Warning (from warnings module):
  File "D:/python小代码/csxiushifu.py", ...

没错,是警告,你翻译过来就知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-13 21:30:05 | 显示全部楼层
https://blog.csdn.net/u010358168/article/details/77773199
看了很多,感觉上述这篇写的最好。
看了一下午,跟着抄了几次代码,总算是看懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-3 21:46:05 | 显示全部楼层
救命啊····不出视频和例题确实很难搞懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-6 10:47:12 | 显示全部楼层
@xxx
def fun():......
@后面,开始运行xxx。下面的代码块整个作为参数放入到xxx中去,即 用fun()进一步修饰xxx.
内置修饰符没看懂。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-12 16:08:59 | 显示全部楼层
,看了评论我心里舒服多了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-12 18:54:25 | 显示全部楼层
最后一个classmethod示例执行时报错啊!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-10 16:04:36 | 显示全部楼层
最后那个 内置装饰器的举例,@classmethod和之后的代码 缩进都是在类下面。查了半天资料搞了半天才明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-15 20:20:56 | 显示全部楼层
看不懂啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 09:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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