gpt4 book ai didi

python - 如何在 Python 3 中创建在封闭域上定义的函数?

转载 作者:行者123 更新时间:2023-12-01 08:52:31 24 4
gpt4 key购买 nike

如何使用“else”函数确保以下函数在封闭域 [0,L] 之外未定义?我使用 if 语句定义端点和间隔 (0,L)。我的代码如下:

def u(x):
if x=0:
return A
elif x=L:
return B
elif 0<x<L:
return 0*x+10
else:

最佳答案

else block 中使用有用的消息引发 ValueError

raise ValueError('x must be in [0, {}]'.format(L))
例如。您还可以创建一个继承自 ValueError 的自定义 DomainError

class DomainError(ValueError):
pass

然后提出。

在代码的其他部分,您只需调用 u 并捕获潜在的异常,遵循 EAFP原理。

编辑:

如果您需要对许多类似数学的函数进行域检查,您也可以自己编写一个简单的装饰器工厂。这是一个示例,根据您的用例,您可能需要执行一些小的修改。

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]

关于python - 如何在 Python 3 中创建在封闭域上定义的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53022423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com