修饰符在python函数中的用法详细解释
来源:互联网 发布:淘宝首页分类导航代码 编辑:程序博客网 时间:2024/06/06 02:39
python修饰符是实现一个函数嵌套的功能,比较以下两个函数
# -*- coding:utf-8 -*-def a(fn): print 'a' def d(st): print "--------------------------------" print st + 'd'#st在这个函数中的生命周期已经结束 return fndef b(fn): print 'b' return fn@a@bdef c(st): print "********************************" print st#这里是执行b、a,同时定义c#下面是连续执行c函数三次,无视修饰符。print "test"c('c')
输出结果是:
b
a
test
********************************
c
# -*- coding:utf-8 -*-def a(fn): print 'a' def d(st): print "--------------------------------" print st + 'd'#st在这个函数中的生命周期已经结束 return ddef b(fn): print 'b' return fn@a@bdef c(st): print "********************************" print st#这里是执行b、a,同时定义c#下面是连续执行c函数三次,无视修饰符。print "test"c('c')
输出结果是:
b
a
test
--------------------------------
cd
以上执行结果的区别是因为返回的函数不一样,返回的函数不一样也就是说执行的函数不一样,所以最终结果也会不一样。
注意几个规律:
返回一个函数就是在执行函数
@后面的调用@下面的
把函数作为参数传递时,整个函数可以用换元的思想去看待,就很简单了
另外注意:
尽管只有一次c('c')
但是在调用之前,b函数和a函数已经被先后执行,也就是说修饰符所在的函数c,两个修饰符就有执行b函数和a函数的效果。
输出“test”作为一个醒目的标记。
最后在调用c('c')时,输出结果到底是否是c函数的输出结果,取决于修饰符@a最后是否会返回c函数,
如果@a最后返回c函数,那么输出结果就是c函数的输出结果,
如果@a最后不返回c函数,而是返回d函数,那么尽管调用了c函数,由于修饰符的存在,输出结果却是d函数的输出结果。
也就是说,对于存在修饰符的函数c,对c调用的结果,取决于修饰符最终是否会返回该函数,如果返回c函数,则执行c,(上面第一份代码)
如果不返回c,返回d,则屏蔽c,执行d(上面第二份代码)
阅读全文
0 0
- 修饰符在python函数中的用法详细解释
- PYTHON函数修饰符用法
- Python中的@函数修饰符
- python中的函数修饰符
- Python中的函数修饰符
- Python中的函数修饰符
- Python中的修饰函数
- strcpy函数用法详细解释
- python 修饰符函数
- python中的 @ 修饰符
- python中的@修饰符
- python中的 @ 修饰符
- 方法访问修饰符在继承中的用法
- static修饰符 (在类中的意义及用法)
- C语言scanf函数用法详细解释!!!
- C语言scanf函数用法详细解释!!!
- python中的pow()函数解释
- Python 中的@修饰符作用
- 无人机项目我的关注angularjs逻辑
- [BZOJ]1187: [HNOI2007]神奇游乐园 插头DP
- 20.odoo入门——杂记
- Linux系统安装wireshark
- hive中order by,distribute by,sort by,cluster by
- 修饰符在python函数中的用法详细解释
- JavaScript
- jQuery-(2)语法
- MySQL联合索引最左原则
- 神奇的Redis延迟
- 【读书精华分享】《分布式实时处理系统 原理、架构与实现》卢誉声著/2016年
- Android基础总结三:BroadcastReceiver总结一
- SPSS工具使用
- excel算出日期所属季度