Python 的装饰器是通过函数式编程来实现的, Java 的注解通过反射来实现,两者实现的方式虽然不一样,但是语法上真的十分相似啊,而且 Python 和 Java 的各种 Web 框架都特别喜欢用装饰器和注解来实现路由功能。。。
所以,这两种语法之间有什么样的内在联系吗,还是说其中一个是模仿的另外一个的语法,最早这种类型的语法是出自于哪种编程语言?
1
misaka19000 OP 来人啊!!!
|
2
skydiver 2016-11-08 17:29:07 +08:00 1
https://en.wikipedia.org/wiki/Python_syntax_and_semantics#Decorators
Python decorators were inspired in part by Java annotations, and have a similar syntax; 看一下维基百科就知道的事情,没必要来这里问 |
3
glasslion 2016-11-08 17:48:04 +08:00 1
|
4
misaka19000 OP |
5
georgema1982 2016-11-09 03:02:09 +08:00
两者除了看上去相似,功能上完全不同。 java 的注解只是注解,它本身不改变被注解对象的行为和性质,只有理解这些注解的处理器才会改变行为。而 python 的装饰器会改变被装饰的对象的行为和性质。所以 python 装饰器比 java 注解更强大。
|
6
shyling 2016-11-09 10:52:29 +08:00
python 的装饰器只是一个语法糖而已。嵌套函数的简化写法。
java 的注解能实现更多好用的功能 |
7
misaka19000 OP |
8
shyling 2016-11-09 11:46:17 +08:00
@misaka19000 不是同一类的东西,只不过用了同一个 @
不过装饰器本身是没功能的 0 0 ,注解也只是一个标记 |
9
misaka19000 OP @shyling 明白了,语法一样,但是可以使用的领域却各自有区别
|
10
georgema1982 2016-11-10 05:20:18 +08:00
@shyling python 装饰器当然是有功能的,它立刻改变了被装饰的对象。
|