Python修饰符--函数修饰符 “@”
Python函数修饰符,“@”,与其说是修饰函数倒不如说是引用、调用它修饰的函数。
举个栗子,下面的一段代码,里面两个函数,没有被调用,也会有输出结果:
def test(f):print "before ..."f()print "after ..."@test
def func():print "func was called"
直接运行,输出结果:
before ...
func was called
after ...
上面代码可以看出来,只定义了两个函数: test和func。没有地方调用它们。如果没有“@test”,运行应该是没有任何输出的。
但是,Python解释器读到函数修饰符“@”的时候,后面步骤会是这样了:
1. 去调用 test函数,test函数的入口参数就是那个叫“func”的函数;
2. test函数被执行,入口参数的(也就是func函数)会被调用(执行);
换言之,修饰符带的那个函数的入口参数,就是下面的那个整个的函数。有点儿类似JavaScript里面的 function a (function () { ... });
再来看一个例子:
def test(func):func()print "call test"def test1(f):f()print "call test1"def main():@testdef fun():print "call fun"@test1def fun1():print "call fun1"
main()
输出结果:
call fun
call fun1
call test1
call test
需要注意的:
1. 函数先定义,再修饰它;反之会编译器不认识;
2. 修饰符“@”后面必须是之前定义的某一个函数;
3. 每个函数只能有一个修饰符,大于等于两个则不可以。
Python修饰符--函数修饰符 “@”相关推荐
- python中的函数修饰器
python中的函数修饰器 – @wrapper 简介 类似于C#的属性.Java的注解,python也有对应的修饰符.从Python2.7和Python3开始,提供了以'@'为标示的修饰符,可以在模 ...
- python中的函数修饰符
这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示例1 ...
- python修饰符作用_python函数修饰符@的使用
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...
- python中函数修饰符_python中的函数修饰符
首先,什么是函数修饰符?函数修饰符就是对原有函数做一层包装.比如有以下两个函数: def func1(): print 'I am function func1' def func2(): print ...
- python函数修饰符@的使用
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...
- python @修饰符_python函数修饰符@的使用方法解析
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...
- python修饰符的理解_python函数修饰符@的使用方法解析
这篇文章主要介绍了python函数修饰符@的使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python函数修饰符@的作用是为现有函数增 ...
- python修饰符号的使用_Python 函数修饰符(装饰器)的使用
Python函数修饰符(装饰器)的使用 1.修饰符的来源 修饰符是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等. 修饰符是解决这类问题的绝佳设计,有了修 ...
- Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
字符串练习题 Python 切片 函数修饰符 #精度和进制 Python 字符串一些语句练 课件练习题 4,.by 字符串的替换 方法 描述 replac ...
最新文章
- Android应用安全与防范之签名校验
- 使用ln -s解决库冲突的问题
- console的高级使用
- element js 包含字符_selenium3.x(10)js弹框处理
- python的scale方法的变体以及使用_Python with用法实例
- Linux网络报文捕获/抓包技术对比:napi、libpcap、afpacket、PF_RING、PACKET_MMAP、DPDK、XDP(eXpress Data Path)
- hdu 1054 Strategic Game
- 使用github客户端上传本地项目到github
- asp.net session对象
- 139邮箱java版,139邮箱登录及发送短信
- 如何用python编写程序打开csv格式文件
- BUG一词是如何来的?
- Unity技术手册 - 粒子基础主模块属性-上
- 教你用身份证号查社保卡号 个人电脑号
- 如何从 OpenVINO 的主分支构建 Python Wheel 包
- 读心术python_有哪些厉害的观人术读心术?
- Linux操作系统网络驱动程序编写
- oracle数据库实现汇总报表的方法
- STM32直流减速电机控制篇(一)PWM调速
- c语言题之二维数组的查找