我想使用Python的eval函数来计算下面的公式:
eval(nvl(a, b))
简而言之,我想检查两个单独的数学表达式,并在
a
为 0 的情况下选择第二个。
nvl
是我的自定义函数,如下所示:
def nvl(a, b):
try:
evaluated = eval(a)
except:
evaluated = 0
if evaluated == 0:
return eval(b)
else:
return evaluated
每当第一个表达式抛出异常时,我就会陷入困境,例如如果
a
是 0/0
那么我的 eval(nvl(0/0, 1))
会抛出异常而不是返回 1
。
有什么方法可以改变这种行为并强制 eval 简单地执行我的方法而不是评估每个参数?
它甚至没有达到你的尝试,除非你的除法在函数的参数中
尽你的努力,除了你在哪里做你的除法。因此你必须给你的函数提供像
这样的商def nvl(a, b):
...
return evaluated
try:
quotient = a # whatever your a is
evaluated = nvl(a, b)
except ZeroDivisionError:
evaluated = 0
我认为你的尝试:除了:其他:有点错误:
看下面的代码。这是你期望发生的事情吗?
def nvl(a, b):
try:
evaluated = eval(a)
except:
return eval(b)
else:
return evaluated
print(nvl("1/3","1"))