【发布时间】:2018-11-18 08:53:33
【问题描述】:
装饰器是 Python 的重要组成部分。简而言之:它们是修改另一个函数的功能的函数。它们有助于使我们的代码更短。
例如:
def greet(name):
def get_message():
return "Hello "
result = get_message()+name
return result
print greet("John")
# Outputs: Hello John
我们可以在上面的代码中使用 python 函数装饰器更短、更容易地完成工作:
@greet
def get_message():
return "Hello"
我认为装饰器非常有用。 java或c#中是否有类似的东西。我知道 @override 等,但我找不到类似 python 的装饰器。
【问题讨论】:
-
如果你想解释一下这些装饰器的作用,也许我们可以不用在互联网上查找你的意思就可以回答。
-
如果您在 C# 或 Java 领域,可能值得链接到或描述装饰器的含义,以便我们知道您在说什么。
-
有很多不同的东西,这取决于你对这些装饰器的实际目标是什么。对于某些可能存在 1to1 替换(例如,Java 中的 @Override 或 C# 中的
override-keyword),对于其他人,您必须使用Attribute或类似的。那么您的具体问题是什么? -
这样的问题并不像投票所暗示的那么糟糕。但是,正如您所看到的,这里没有人对 python 装饰器一无所知。因此,一个小例子或至少一个超出“有用”的目标会有所帮助。但是不响应所有的 cmets 真的会杀死它。 - 你会想要研究委托,因为这是相当于“函数作为变量”的 c#。 (注意
@只是语法糖。) -
很高兴您改进了您的问题。现在,如果摆脱所有这些反对票就这么简单..
标签: java c# python-decorators