在python中计算物理公式的有效/明智方式

问题描述 投票:0回答:2

我正在寻找一种有效的方法来计算(复杂)数学函数的结果。

现在看起来与:

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个函数,因此完整的公式占用几行。

所以,什么是计算物理公式结果的聪明方法?

python scientific-computing
2个回答
0
投票

如果您担心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


0
投票
def formula(x):
    if not x :
        return 1
    return x*x*5
© www.soinside.com 2019 - 2024. All rights reserved.