Python – 饼图语法 (@)
装饰器是一个可调用对象,用于扩展其他可调用对象的功能。简单来说,它允许你用另一个函数。在这种情况下,“@”符号有时被称为装饰器的饼图语法。 pie 语法使其更易于访问和扩展。
因为,我们已经使用 staticmethod() 和 classmethod() 进行了装饰。因此,一个函数定义可以由一个或多个装饰器表达式包装。在定义函数时,在包含函数定义的范围内评估装饰器表达式。结果必须是可调用的,以函数对象作为唯一参数调用。返回值绑定到函数名而不是函数对象。可以以嵌套方式应用多个装饰器。
句法:
(Pie_syntax)
any_callable
例子:
@gfg
def geeks():
.
.
对于重复赋值和调用语句似乎无用的情况,pie 语法就是救星。我们可以在@ 符号后命名装饰函数,并将其放在要装饰的函数之前。
以下程序将帮助您更好地理解这一点:
方案一:
Python3
# defining the decorator
def decor(func):
print("#----------------#")
func()
print("#----------------#")
# using the decorator
@decor
def main():
print("$ GeeksforGeeks $")
if __name__ == 'main':
main()
Python3
# defining the 1st decorator
def decor1(func):
print("_________________")
# defining the 2nd decorator
def decor2(func):
print("$****************$")
func()
print("$****************$")
# using the decorator
@decor1
@decor2
def main():
print("$ GeeksforGeeks $")
# Driver program to test the code
if __name__ == 'main':
main()
输出:
#—————-#
$ GeeksforGeeks $
#—————-#
链饼语法
我们也可以在一个函数中有多个装饰器,不一定只有一个。但是,记住装饰器的顺序很重要。调用装饰器的顺序将直接影响输出。
方案二:
蟒蛇3
# defining the 1st decorator
def decor1(func):
print("_________________")
# defining the 2nd decorator
def decor2(func):
print("$****************$")
func()
print("$****************$")
# using the decorator
@decor1
@decor2
def main():
print("$ GeeksforGeeks $")
# Driver program to test the code
if __name__ == 'main':
main()
输出:
$****************$
$ GeeksforGeeks $
$****************$
_________________