博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的@ 装饰器 闭包 切片式编程
阅读量:6706 次
发布时间:2019-06-25

本文共 674 字,大约阅读时间需要 2 分钟。

  hot3.png

'@' 用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,

  出现在函数定义的前一行,不允许和函数定义在同一行

  一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西?

  示例:  

def square_sum(fn):    def square(*args):        print "1---", args        n = args[0]        # return n*(n-1)*(2*n-1)/6        print "2==", n*(n-1)*(2*n-1)/6        print fn.__name__        fn(n*(n-1)*(2*n-1)/6)        print "*"*15        return fn(n*(n-1)*(2*n-1)/6)    return square@square_sumdef sum_a(a):    print "3=", a    sum_a(10)

结果

1--- (10,)2== 285sum_a3= 285***************3= 285

 

可以看出,他是先执行修饰器函数,然后有return fn的时候,修饰器下的函数才是生效的,否则函数sum_a 是没有结果的。

装饰器就是对一个函数进行包夹,前后增加代码而独立于函数代码之外。其实也就是闭包。切片式编程的基础。

转载于:https://my.oschina.net/u/1777508/blog/1633808

你可能感兴趣的文章
〖Linux〗Ubuntu用户重命名、组重命名,机器重命名~
查看>>
如何真正将读过的书牢记于心
查看>>
/bin/sh^M: bad interpreter:没有那个文件或目录解决
查看>>
【弱省胡策】Round #0 Flower Dance DP
查看>>
三折页设计尺寸的制作要素宣传册平面印刷
查看>>
zoj 3620 Escape Time II dfs
查看>>
MFC 窗体重绘
查看>>
android TypedValue.applyDimension()的作用
查看>>
【OGG】OGG的下载和安装篇
查看>>
mysql中出现的Data truncated for column
查看>>
NSString 筛选和最后一个空白、空行,多换行成一个新行
查看>>
Android 设置 横屏 竖屏
查看>>
falcon存储引擎入门(一)
查看>>
C#开源系统大汇总
查看>>
SqlServer-函数
查看>>
理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)...
查看>>
单片机定时器中断原理
查看>>
编程学习要讲究效率和经验
查看>>
使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享
查看>>
hdu3836联通的强还原性点
查看>>