How can I ensure the following function is undefined outside of the closed domain [0,L] using the 'else' function? I define the endpoints and the interval (0,L) using if-statements. My code is below:
def u(x):
if x=0:
return A
elif x=L:
return B
elif 0<x<L:
return 0*x+10
else:
答案 0 :(得分:1)
在ValueError
块中用有用的信息举起else
,
raise ValueError('x must be in [0, {}]'.format(L))
例如。您还可以创建继承自DomainError
ValueError
class DomainError(ValueError):
pass
然后提出来。
在代码的其他部分,您只需遵循EAFP原则,调用u
并捕获潜在的异常。
修改:
如果需要对许多类似于数学的函数进行域检查,则还可以为自己编写一个简单的装饰器工厂。这是一个示例,根据您的用例,您可能需要执行一些小的修改。
def domain(lower, upper):
def wrap(f):
def f_new(x):
if not lower <= x <= upper:
raise ValueError('x must be in [{}, {}]'.format(lower, upper))
return f(x)
return f_new
return wrap
演示:
>>> @domain(0, 10)
...:def f(x):
...: return x + 1
...:
...:
>>> f(2)
>>> 3
>>> f(-1)
[...]
ValueError: x must be in [0, 10]
>>> f(10.1)
[...]
ValueError: x must be in [0, 10]