
Python 的装饰器是通过函数式编程来实现的, Java 的注解通过反射来实现,两者实现的方式虽然不一样,但是语法上真的十分相似啊,而且 Python 和 Java 的各种 Web 框架都特别喜欢用装饰器和注解来实现路由功能。。。
所以,这两种语法之间有什么样的内在联系吗,还是说其中一个是模仿的另外一个的语法,最早这种类型的语法是出自于哪种编程语言?
1 misaka19000 OP 来人啊!!! |
2 skydiver 2016-11-08 17:29:07 +08:00 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 |
4 misaka19000 OP |
5 georgema1982 2016-11-09 03:02:09 +08:00 两者除了看上去相似,功能上完全不同。 java 的注解只是注解,它本身不改变被注解对象的行为和性质,只有理解这些注解的处理器才会改变行为。而 python 的装饰器会改变被装饰的对象的行为和性质。所以 python 装饰器比 java 注解更强大。 |
6 |
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 装饰器当然是有功能的,它立刻改变了被装饰的对象。 |