@修饰符

  '@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。 只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。

  本质上讲,装饰符@类似于回调函数,把其它的函数(暂且称为目的参数)作为自己的入参,在目的函数执行前,执行一些自己的操作,比如:计数、打印一些提示信息等,然后返回目的函数。下面列举一个简单的例子。

import time

def time(func):
print(time.ctime())
return func() @time # 从这里可以看出@time 等价于 time(xxx()),但是这种写法你得考虑python代码的执行顺序
def xxx():
print('Hello world!') 运行结果:
Wed Jul 26 23:01:21 2017
Hello world!

*args和**kwargs

  当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。例如:foo(name,age,date=newdate,birthday=date)

super()

最新文章

  1. Criteria查询初学者的采纳点哦
  2. centos yum 安装
  3. PartialViewResult不鸟_ViewStart.cshtml
  4. Android 5.x特性概览五
  5. Kali安装
  6. ASP.NET 免费开源控件
  7. POJ 2762 Going from u to v or from v to u? (强连通分量缩点+拓扑排序)
  8. Android开发具体解释之ListView具体解释一
  9. IOS传值之Block传值(二)
  10. hihoCoder 1015 KMP算法
  11. bug终结者 团队作业第三周
  12. Angular记录(4)
  13. ajax与后台交互案例
  14. springAop整合自定义注解做方法日志配置(源码在附件)
  15. 查看Chrome密码只需一段代码
  16. 对Java单例设计模式中懒汉式类定义的讨论
  17. [剑指Offer]53-在排序数组中查找数字(二分查找)
  18. 使用clamav模块对数据流进行病毒检测
  19. JMETER TPS
  20. SharePoint Search 分词(WordBreaker)

热门文章

  1. Python 操作集合
  2. server被强制关闭,
  3. HTML词法和语法
  4. Linux grep \t Tab 键失效
  5. JavaScript对象 Object类型基础
  6. 还在用Json完成Ajax,改用Beetl吧
  7. QGE 在齐次 Besov 空间中的准则
  8. webpack安装异常
  9. Redis学习之二 数据类型和相关命令
  10. C#常用的单元测试框架