Python 的装饰器是通过函数式编程来实现的, Java 的注解通过反射来实现,两者实现的方式虽然不一样,但是语法上真的十分相似啊,而且 Python 和 Java 的各种 Web 框架都特别喜欢用装饰器和注解来实现路由功能。。。
所以,这两种语法之间有什么样的内在联系吗,还是说其中一个是模仿的另外一个的语法,最早这种类型的语法是出自于哪种编程语言?
Python 的装饰器是通过函数式编程来实现的, Java 的注解通过反射来实现,两者实现的方式虽然不一样,但是语法上真的十分相似啊,而且 Python 和 Java 的各种 Web 框架都特别喜欢用装饰器和注解来实现路由功能。。。
所以,这两种语法之间有什么样的内在联系吗,还是说其中一个是模仿的另外一个的语法,最早这种类型的语法是出自于哪种编程语言?
|
1
来人啊!!!
|
|
2
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
|
|
4
|
|
georgema1982Nov 9, 2016
5
两者除了看上去相似,功能上完全不同。 java 的注解只是注解,它本身不改变被注解对象的行为和性质,只有理解这些注解的处理器才会改变行为。而 python 的装饰器会改变被装饰的对象的行为和性质。所以 python 装饰器比 java 注解更强大。
|
|
shylingNov 9, 2016
6
python 的装饰器只是一个语法糖而已。嵌套函数的简化写法。
java 的注解能实现更多好用的功能 |
|
7
|
|
shylingNov 9, 2016
8
@misaka19000 不是同一类的东西,只不过用了同一个 @
不过装饰器本身是没功能的 0 0 ,注解也只是一个标记 |
|
9
@shyling 明白了,语法一样,但是可以使用的领域却各自有区别
|
|
georgema1982Nov 10, 2016
10
@shyling python 装饰器当然是有功能的,它立刻改变了被装饰的对象。
|