Python 应用一个函数并使用装饰器检查自定义异常
我想写一个函数来检查一个条件(带有自定义异常),如果没有引发异常,它将应用一个函数并返回结果Python 应用一个函数并使用装饰器检查自定义异常,python,python-3.x,python-decorators,Python,Python 3.x,Python Decorators,我想写一个函数来检查一个条件(带有自定义异常),如果没有引发异常,它将应用一个函数并返回结果 # Custom exceptions class NegativeNumber(Exception): pass class BigNumber(Exception): pass def add_two(number): return number + 2 def apply_function(number, f): def check_condition(numb
# Custom exceptions
class NegativeNumber(Exception):
pass
class BigNumber(Exception):
pass
def add_two(number):
return number + 2
def apply_function(number, f):
def check_condition(number, f):
try:
if number < 0:
raise NegativeNumber
if number > 10:
raise BigNumber
except NegativeNumber:
return ("Negative Number")
except BigNumber:
return ("Big Number")
return (f(number))
return check_condition(number, f)
apply_function(5, add_two)
#自定义异常
类枚举器(异常):
通过
类BigNumber(例外):
通过
def添加_2(编号):
返回号码+2
def应用_功能(数字,f):
def检查_条件(编号,f):
尝试:
如果数字<0:
举出负数
如果数字>10:
大数
除负数外:
返回(“负数”)
除BigNumber外:
返回(“大数字”)
报税表(f(编号))
返回检查条件(编号,f)
应用_函数(5,添加_2)
使用decorators可以更好地编写此代码吗?您已经完成了大部分工作。我稍微修改了函数名和代码结构。这应该是您正在寻找的:
# Custom exceptions
class NegativeNumber(Exception):
pass
class BigNumber(Exception):
pass
def check_exceptions(f):
def wrapped(number):
try:
if number < 0:
raise NegativeNumber
if number > 10:
raise BigNumber
except NegativeNumber:
return "Negative Number"
except BigNumber:
return "Big Number"
return f(number)
return wrapped
@check_exceptions
def add_two(number):
return number + 2
for num in (-1, 5, 15):
print(add_two(num))
#自定义异常
类枚举器(异常):
通过
类BigNumber(例外):
通过
def检查_异常(f):
def包装(编号):
尝试:
如果数字<0:
举出负数
如果数字>10:
大数
除负数外:
返回“负数”
除BigNumber外:
返回“大数字”
返回f(编号)
退货包装
@检查例外情况
def添加_2(编号):
返回号码+2
对于数字输入(-1、5、15):
打印(添加两个(数量))
输出:
Negative Number
7
Big Number
负数
7.
大数
谢谢。这正是我想做的