java @注解 和 python @函数装饰器

一直在用python和java的@标记一个函数,他俩有啥区别呢?
今天把我在笔记上的内容分享出来,供大家参考

先写Java

java中的@XX 叫Annotation 也就是注解。在这里插入图片描述
1、它存在的意义什么?

1、让编译器检查代码
2、注解像xml一样给类、方法注入信息

0,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NtYXJ0U2h5bHlCb3k=,size_16,color_FFFFFF,t_70#pic_center)

2、他是如何实现?
https://www.jianshu.com/p/89f4c9d7d37b

python

装饰器模式和上一节说到的代理模式非常相似,可以认为,装饰器模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点是侧重对主题类的过程的控制,而装饰模式则侧重对类功能的加强或减弱。
JAVA中的动态代理模式,是实现AOP的重要手段。而在Python中,AOP通过装饰器模式实现更为简洁和方便。
先来解释一下什么是AOP。AOP即Aspect Oriented Programming,中文翻译为面向切面的编程,它的含义可以解释为:如果几个或更多个逻辑过程中(这类逻辑过程可能位于不同的对象,不同的接口当中),有重复的操作行为,就可以将这些行为提取出来(即形成切面),进行统一管理和维护。举例子说,系统中需要在各个地方打印日志,就可以将打印日志这一操作提取出来,作为切面进行统一维护。
从编程思想的关系来看,可以认为AOP和OOP(面向对象的编程)是并列关系,二者是可以替换的,也可以结合起来用。实际上,在Python语言中,是天然支持装饰器的,如下例:

def log(func):
def wrapper(*args, **kw):
print ‘call %s():’ % func.name
return func(*args, **kw)
return wrapper

@log
def now():
print ‘2016-12-04’
if name==“main”:
now()
打印如下:
call now():
2016-12-04

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值