我正在寻找一种有效的方法来计算(复杂)数学函数的结果。
现在看起来与:
def f(x):
return x**2
def g(x):
if x is 0: return 1
return f(x)*5
def h(x):
return g(x)
res = [f(input[i]) for i in range(1000000)]
由于每个函数调用在Python中都是昂贵的,如果f(x)与g(x)合并,则代码应该已经运行得更快。不幸的是,在那种情况下,g(x)函数的'return ...'行已经很长了。此外,当前实际上总共定义了6个函数,因此完整的公式占用几行。
所以,什么是计算物理公式结果的聪明方法?
如果您担心return ...
行的长度,则可以使用中间值,例如:
def g(x):
if x == 0:
return 1
x_squared = x ** 2
return x_squared * 5
在这种情况下,像在is
中那样使用x is 0
运算符是不正确的。它不检查数值是否相等,这是==
所做的。 is
运算符检查两个操作数是否指向内存中的完全相同的对象,在这种情况下,由于Python解释器会智能地重用数字对象,因此这是正确的。它可能导致混乱的错误,例如:
a = 1234
b = 1233
a is (b + 1) # False
实际上,is
主要仅用于检查值is None
。
def formula(x):
if not x :
return 1
return x*x*5