为什么定义函数后会出现语法错误?

2024-09-28 03:14:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码来定义一个函数

def f(Frequency,Omegahot,Beta,Omegacold,Thot,Tcold):
    C=300000000
    k=1.38E-23
    h=6.062E-34
    return(Omegahot*numpy.power(Frequency,Beta))*((2*h*numpy.power(Frequency,3)/(C**2)))*(1/(numpy.exp(h*Frequency/(k*Thot))-1)) + (Omegacold*numpy.power(Frequency,Beta)*((2*h*numpy.power(Frequency,3)/(C**2)))*(1/(numpy.exp(h*Frequency/(k*Tcold))-1))

xdata=[1,2,3,4,5]   
popt, pcov = curve_fit(f,xdata,fluxs,p0=None,)
print popt

我在做错误的语法1,4,4,但是我得到错误的数据行


Tags: 函数代码numpy定义def错误betapower
2条回答

可读性很重要。这里有一种重写函数的方法,它更具可读性。通过对多次出现的表达式进行预计算,您将需要更少的括号级别,并使计算完成得更快一些。在

import numpy as np
def f(Frequency, Omegahot, Beta, Omegacold, Thot, Tcold, exp=np.exp, power=np.power):
    C = 300000000
    k = 1.38E-23
    h = 6.062E-34
    fb = power(Frequency, Beta)
    f3 = power(Frequency, 3)
    C2 = C ** 2
    C3 = fb * 2 * h * f3 / C2
    hF = h * Frequency
    return ((Omegahot * C3 / (exp(hF / (k * Thot)) - 1))
            + (Omegacold * C3 / (exp(hF / (k * Tcold)) - 1))))

前一行的圆括号不平衡,在末尾再加上一个圆括号

return (Omegahot*numpy.power(Frequency,Beta))*((2*h*numpy.power(Frequency,3)/(C**2)))*(1/(numpy.exp(h*Frequency/(k*Thot))-1)) + (Omegacold*numpy.power(Frequency,Beta)*((2*h*numpy.power(Frequency,3)/(C**2)))*(1/(numpy.exp(h*Frequency/(k*Tcold))-1)))

但要想弄清楚它们真正属于哪里,这个公式有点混乱。在

你真的想把这个公式分成80个字符的行,并使用临时变量:

^{pr2}$

但是有更好的变量名。我已经设法从公式中删除了一个重复的temp2,只需将其分解成更小的块。在

相关问题 更多 >

    热门问题