1、基本含义

  @符号用做函数的修饰符,可以在模块或者类的定义层内对函数进行修饰,出现在函数定义的前一行,不允许和函数定义在同一行。

  一个修饰符就是一个函数,它将被修饰的函数作为参数,并返回修饰后的同名函数或其他可调用的东西(如果返回不是一个可调用的对象那么会报错)。

2、举例说明

  例子1:

def wrap(f):def decorator(*args, **kw):print 'Call %s()' % f.__name__return f(*args, **kw)return decorator@wrap
def func(a, b):return a * 10 + bif __name__ == '__main__':print func(1, 2)

结果:

Call func()
12

个人结论:先执行wrap内的属性

例子2:

def wrap1(f):def decorator(*args, **kw):print 'Call %s() in wrap1' % f.__name__return f(*args, **kw)return decoratordef wrap2(f):def decorator(*args, **kw):print 'Call %s() in wrap2' % f.__name__return f(*args, **kw)return decorator@wrap2
@wrap1
def func(a, b):return a * 10 + bif __name__ == '__main__':print func(5, 6)

结果:

Call decorator() in wrap2
Call func() in wrap1
56

个人结论:先执行wrap2、1内顺序的属性 

3、总结

  由上面的例子可以看出,@符号其实就是个包装器,第2个例子中的func(5,6)其实含义是:wrap2(wrap1(func(5,6)))

  每一层调用装饰都传递的是函数对象,每一层Wrap返回对象也是一个可调用的对象(如上例中的decorator)

Python 中@符号解释相关推荐

  1. Python中metaclass解释

    Classes as objects 首先,在认识metaclass之前,你需要认识下python中的class.python中class的奇怪特性借鉴了smalltalk语言.大多数语言中,clas ...

  2. Python中@符号是什么意思?

    Python中的@符号是装饰器的意思.Python中装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针). 实质:是一个 ...

  3. python中符号的用法_python中的@符号的作用

    '@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行.也就是说@A def f(): 是非法的.只可以在模块或类定义层内对函数进行修饰,不 ...

  4. python中符号输入_Python基础(输入、运算符)

    输入 1. python2版本中 1.1 使用 raw_input()函数, 看如下示例: password = raw_input("请输入密码:") print ('您刚刚输入 ...

  5. Python中//符号是什么意思?

    Python中的//是向下取整的意思 a//b,应该是对除以b的结果向负无穷方向取整后的数 举例: 5//2=2(2.5向负无穷方向取整为2),同时-5//2=-3(-2.5向负无穷方向取整为-3)

  6. python中符号 ~ 的意义和用法

    ~ 在python中为反转的意思, 目前我知道的有两种用法. 一. 数值按位翻转 ~ x 就是 - ( x + 1) x = 2 print(~x) -3 二. 布尔值取反 直接看案例 import ...

  7. python中θ符号怎么打出来_利用python打印特殊符号

    原博文 2020-05-02 19:57 − 1.方法一,调用字符映射表输入特殊符号 在键盘上按win+R,在打开的对话框中输入"charmap",会出现字符映射表: 2.利用字符 ...

  8. python中θ符号怎么打出来_各种符号在键盘上怎么打出来?

    展开全部 键盘2113上已有的的符号打法 (1)键盘上有5261的一个键上有两个符号的,4102如图所示: (2)如果想打1653键上面符号,则可以按住Shift,即可打出上面的字符,例如按住和< ...

  9. python中θ符号怎么打出来_怎么打特殊符号

    1.在聊天窗口中,切换到智能ABC输入法后,按下字符V键,再按下1-9之间的任何数字键后将出现特殊字符,在使用键盘上面的+号翻页可以打出更多的特殊字符来: 2. 使用QQ拼音输入法打出特殊字符: 同样 ...

最新文章

  1. VC++中线程同步技术分析3
  2. codeblocks调用matlab,matlab engine: 在Codeblocks中使用C++调用matlab | 学步园
  3. 云炬Android开发报错处理教程 完美解决Android Studio maven { url ‘https://jitpack.io‘ } 无法下载问题
  4. BZOJ1061: [Noi2008]志愿者招募
  5. Windows 7安装PlayReady出现“任务被禁用”错误信息
  6. unity3d人物跳_Unity3D研究院之角色控制器组件研究(二十二)
  7. [Swift]LeetCode20. 有效的括号 | Valid Parentheses
  8. 龙芯CPU芯片介绍说明
  9. 计算机系统文件格式,iso是什么文件格式,怎么使用呢?
  10. C语言之va_list
  11. 从 jsonpath 和 xpath 到 SPL
  12. python五大模块_python-5-常用模块
  13. Oracle的系统和对象权限 查看用户包含的各类权限
  14. Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)
  15. 获取apk签名及apk签名方法
  16. 【shell 脚本编程】一键搭建 LAMP,Web 应用程序平台,你值得拥有
  17. “共享经济”何以真“共享”——区块链技术赋能共享出行
  18. SSL/TLS(4): TLS连接握手过程详细分析
  19. 【Why】物理内存与虚拟内存区别与联系
  20. 微信公众号开发--获取用户信息中文乱码的解决方案

热门文章

  1. mysql批量查询并替换或者更新某个字段
  2. django权限系统实现步骤_在django中实现一个简单的权限管理
  3. 【ES6(2015)】新的声明方式 let、const
  4. Spring Boot文档阅读笔记-对Securing a Web Application解析
  5. 计算机图形学Web前端笔记-浏览器中心点转场景坐标理论及实现(two.js)
  6. Flask笔记-任务框架搭建
  7. java equ,Java equals方法详解
  8. python dataframe 取每行的最大值,在python数据框中的每一行中查找最大值
  9. ubuntu php 中文乱码,Ubuntu环境下,图例中文乱码怎么办?
  10. 锁 唤醒_Java笔记|等待唤醒机制