在Python中单独测试正无穷大或负无穷大
正无穷大或负无穷大的测试集中在一起。什么是蟒蛇式的测试方法 测试正无穷大的方法:在Python中单独测试正无穷大或负无穷大,python,infinity,Python,Infinity,正无穷大或负无穷大的测试集中在一起。什么是蟒蛇式的测试方法 测试正无穷大的方法: x==float('+inf') math.isinf(x)和x>0 测试负无穷大的方法: x==float('-inf') math.isinf(x)和x0之外,似乎更喜欢方式2。这种“pythonic”方式是与可读性和可维护性相结合 也就是说,x==float(“inf”)和x==float(“-inf”)对我来说更可读,我更喜欢它们数学.isinf(x)和x>0的速度更快,但每次调用大约只有40纳秒 因此,除
x==float('+inf')
math.isinf(x)和x>0
x==float('-inf')
math.isinf(x)和x<0
>>> def ispinf1(x): return x == float("inf")
...
>>> dis.dis(ispinf1)
1 0 LOAD_FAST 0 (x)
3 LOAD_GLOBAL 0 (float)
6 LOAD_CONST 1 ('inf')
9 CALL_FUNCTION 1
12 COMPARE_OP 2 (==)
15 RETURN_VALUE
拆卸方式2:
>>> def ispinf2(x): return isinf(x) and x > 0
...
>>> dis.dis(ispinfs)
1 0 LOAD_GLOBAL 0 (isinf)
3 LOAD_FAST 0 (x)
6 CALL_FUNCTION 1
9 JUMP_IF_FALSE_OR_POP 21
12 LOAD_FAST 0 (x)
15 LOAD_CONST 1 (0)
18 COMPARE_OP 4 (>)
>> 21 RETURN_VALUE
除了x>0之外,似乎更喜欢方式2。这种“pythonic”方式是与可读性和可维护性相结合
也就是说,x==float(“inf”)
和x==float(“-inf”)
对我来说更可读,我更喜欢它们<代码>数学.isinf(x)和x>0的速度更快,但每次调用大约只有40纳秒
因此,除非你检查了大量的数字,否则它不会对运行时间产生太大影响。还有
numpy
>>> import numpy as np
>>> np.isneginf([np.inf, 0, -np.inf])
array([False, False, True], dtype=bool)
>>> np.isposinf([np.inf, 0, -np.inf])
array([ True, False, False], dtype=bool)
然后是常规isinf
>>> np.isinf([np.inf, 0, -np.inf])
array([ True, False, True], dtype=bool)
如果您也在使用,例如symphy,那么math.isinf(symphy.oo)将给出正确的答案,而symphy.oo==float(“inf”)将为false。还可以将
float(“inf”)
和float(“-inf”)
的结果存储在变量中,以避免最小的惩罚。“每次调用仅40纳秒左右”?只有这是cpu时间的十年