在python中检查函数参数的范围
如何处理数值上有效但物理上超出范围的函数 原因是,我想让我的程序告诉我并停止,如果物理正确的范围是左 我考虑使用ValueError异常来处理此错误 例如:在python中检查函数参数的范围,python,function,exception,arguments,Python,Function,Exception,Arguments,如何处理数值上有效但物理上超出范围的函数 原因是,我想让我的程序告诉我并停止,如果物理正确的范围是左 我考虑使用ValueError异常来处理此错误 例如: def return_approximation(T): #return T only if it is inbetween 0 < T < 100 return T def返回近似值(T): #仅当T介于0>f(0) >>>f(1) 1. 编辑:例外情况下的解决方案: >>> def f(T):
def return_approximation(T):
#return T only if it is inbetween 0 < T < 100
return T
def返回近似值(T):
#仅当T介于0
Python为此类参数限制提供了assert
-语句
def return_approximation(T):
assert 0 < T < 100, "Argument 'T' out of range"
return T
def返回近似值(T):
断言0
Python为此类参数限制提供了assert
-语句
def return_approximation(T):
assert 0 < T < 100, "Argument 'T' out of range"
return T
def返回近似值(T):
断言0
我不确定你所说的物理意义上的是什么意思
一般来说,如果超出范围的错误是由外部数据引起的,则应该引发异常;如果错误来自您自己的数据,您可以使用assert
中止当前执行。我不确定您所说的物理上是什么意思
一般来说,如果超出范围的错误是由外部数据引起的,则应该引发异常;如果错误来自您自己的数据,您可以使用assert
中止当前执行。您可以简单地将返回值限制为T(如果它与您的条件匹配),否则不返回任何值
,如下所示:
>>> def f(T):
return T if 0 < T < 100 else None
>>> f(100)
>>> f(99)
99
>>> f(0)
>>> f(1)
1
定义f(T):
如果0>>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
定义f(T):
如果0>>f(100)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
f(100)
文件“”,第5行,在f中
升值误差
数值误差
>>>f(99)
99
>>>f(0)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
f(0)
文件“”,第5行,在f中
升值误差
数值误差
>>>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
定义f(T):
如果0>>f(100)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
f(100)
文件“”,第5行,在f中
引发异常(“T超出范围”)
例外:T超出范围
您可以简单地将返回值限制为T(如果它与您的条件匹配),否则将返回None
,如下所示:
>>> def f(T):
return T if 0 < T < 100 else None
>>> f(100)
>>> f(99)
99
>>> f(0)
>>> f(1)
1
定义f(T):
如果0>>> 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
定义f(T):
如果0>>> 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
定义f(T):
如果0您应该引发一个名为ValueError的异常
if 0 < T < 100:
raise ValueError('T must be in the exclusive range (0,100)')
如果0
您应该引发一个名为ValueError的异常
if 0 < T < 100:
raise ValueError('T must be in the exclusive range (0,100)')
如果0
如果T小于零或大于100,则引发自定义异常?那么我们如何提供帮助?物理上超出范围的和数值上有效的是什么意思。提供一些示例,也要更具体一些。这是断言
-语句的用例。如果T小于零或大于100,则引发自定义异常?那么我们如何提供帮助?物理上超出范围
和数值上有效的是什么意思。请提供一些示例,并且更具体一些。这是assert
-statement的用例。您能否详细说明在这种情况下None的用法。例如,程序的预期行为。返回None以指示特殊含义的函数容易出错,因为None和其他值(例如零、空字符串)在条件表达式中的计算结果都为False。因此,它可能不太容易出现文档错误和引发异常。但在这种特殊情况下,似乎没有一个不会导致任何问题。@tarashypka,正确,但这取决于应用程序,它可以作为返回条件来决定下一步,我不清楚OP要求是返回要测试的内容还是引发异常,但是我也准备在上面添加一些东西。@marou,第一个函数,如果T在0到100之间,则返回T的值,否则它将返回None
,第二个函数,如果T不在0到100之间,则最终将引发异常。您能详细说明在这种情况下None的用法吗。例如,程序的预期行为。返回None以指示特殊含义的函数容易出错,因为None和其他值(例如零、空字符串)在条件表达式中的计算结果都为False。因此,它可能不太容易出现文档错误和引发异常。但在这种特殊情况下,似乎没有一个不会导致任何问题。@tarashypka,正确,但这取决于应用程序,它可以作为返回条件来决定下一步,我不清楚OP要求是返回要测试的内容还是引发异常,但我也准备在这上面加些东西。@marou,fi