在python中检查函数参数的范围

时间:2017-01-14 11:30:12

标签: python function exception arguments

如何处理数值有效但物理上超出范围的函数?

原因是,如果剩下物理上正确的范围,我希望我的程序告诉我并停止。

我考虑过使用ValueError异常进行此错误处理。

示例:

def return_approximation(T):
  #return T only if it is inbetween 0 < T < 100
  return T

4 个答案:

答案 0 :(得分:4)

Python有assert - 这种参数限制的声明。

def return_approximation(T):
    assert 0 < T < 100, "Argument 'T' out of range"
    return T

答案 1 :(得分:0)

我不确定physically的意思。

一般来说,如果超出范围的错误是由外部数据引起的,那么您应该提出异常;如果错误来自您自己的数据,您可以使用assert中止当前执行。

答案 2 :(得分:0)

您可以简单地将返回值限制为T(如果它符合您的条件return None),如下所示:

>>> def f(T):
        return T if 0 < T < 100 else None

>>> f(100)
>>> f(99)
99
>>> f(0)
>>> f(1)
1

编辑:有例外的解决方案:

>>> def f(T):
        if 0 < T < 100:
            return T
        else:
            raise ValueError


>>> f(100)
Traceback (most recent call last):
  File "<pyshell#475>", line 1, in <module>
    f(100)
  File "<pyshell#474>", line 5, in f
    raise ValueError
ValueError
>>> f(99)
99
>>> f(0)
Traceback (most recent call last):
  File "<pyshell#477>", line 1, in <module>
    f(0)
  File "<pyshell#474>", line 5, in f
    raise ValueError
ValueError
>>> f(1)
1

您甚至可以输出自己的信息,以便更清晰:

>>> def f(T):
        if 0 < T < 100:
            return T
        else:
            raise Exception('T is out of Range')

>>> f(100)
Traceback (most recent call last):
  File "<pyshell#484>", line 1, in <module>
    f(100)
  File "<pyshell#483>", line 5, in f
    raise Exception('T is out of Range')
Exception: T is out of Range

答案 3 :(得分:0)

您应该引发一个名为 ValueError 的异常。

if 0 < T < 100:
    raise ValueError('T must be in the exclusive range (0,100)')