Python中的条件装饰器
在Python中,装饰器是函数或类,它们通过将函数作为输入并返回可调用对象来包装函数作为包装器。它们允许创建可重用的构建代码块,这些代码块可以更改或扩展其他功能的行为。
条件装饰器
给定一个条件,这里的想法是在满足某个条件或为真时使用装饰器执行代码或基本上包装一个函数。有两种方法可以有条件地使用装饰器。
方法一:当装饰器决定如何包装一个函数时
- 在这种情况下,函数通常会传递给装饰器
- 然后根据条件,装饰器决定如何处理代码
以下程序通常将函数传递给装饰器,然后如果给定条件为真,则程序以大写形式返回字符串,如果为假,则以小写形式返回。
condition = True
def conditional_decorator(func):
def wrapper():
oldstring = func()
if condition:
newstring = oldstring.upper()
else:
newstring = oldstring.lower()
return newstring
return wrapper
@conditional_decorator
def func():
return 'geeKSfoRGEEks'
print(func())
输出:
'GEEKSFORGEEKS'
方法2:在这种情况下,装饰器只有在满足特定条件时才会被调用。
在下面的程序中,程序接受用户输入来决定条件。如果用户输入 1,则调用装饰器并以大写形式返回字符串。如果用户输入 2,则再次调用装饰器并以小写形式返回给定的字符串。除此之外,如果输入任何其他数字,则函数将按原样返回,无需任何修改。
def decorator1(func):
def wrapper():
oldstring = func()
newstring = oldstring.upper()
return newstring
return wrapper
def decorator2(func):
def wrapper():
oldstring = func()
newstring = oldstring.lower()
return newstring
return wrapper
cond = 1
if cond == 1:
@decorator1
def func():
return 'GeeksFORGeeKs'
elif cond == 2:
@decorator2
def func():
return 'GeeksFORGeeKs'
else:
def func():
return 'GeeksFORGeeKs'
print(func())
输出:
GEEKSFORGEEKS