如何在另一个python文件中使用函数

时间:2017-10-11 23:21:02

标签: python function

我创建了一个名为WaveLengthCal(d,T)的函数,如下所示

def WaveLengthCal(d, T):

 import numpy as np

 g=9.8
 k0h=4*np.pi**2/g/T**2*d;

 if k0h>2.72:
    kh=k0h*(1+2*np.exp(-2*k0h))
 else:
    kh=np.sqrt(k0h)*(1+1/16*k0h+11/360*k0h**2)

 NP=10 # number of time of iteration
 L0=g*T**2/2/np.pi
 L=L0*np.tanh(kh)

 if d/L <1/20:
    L=T*np.sqrt(g*d)
 elif d/L>1/2:
    L=L0
 else:
    for i in range(NP):
        L=g*T**2/2/np.pi*np.tanh(2*np.pi*d/L)

 return L

如果我在与

相同的文件中使用此功能,此功能可以正常工作
>>> WaveLengthCal(2,3)
[11.297788563155367]

但是,当我尝试在另一个python文件中使用此函数时,如下所示

import WaveLengthCal as wl

L=wl.WaveLengthCal(0.513,2)

它不能正常工作,它显示错误信息为

> Traceback (most recent call last):   File
> "/usr/lib/python3.5/code.py", line 91, in runcode
>     exec(code, self.locals)   File "<input>", line 7, in <module> TypeError: WaveLengthCal() missing 1 required positional argument: 'T'

我不知道为什么,因为我已经在那里放了两个输入,但它一直告诉我其中一个参数丢失了。有人有什么建议吗?

2 个答案:

答案 0 :(得分:0)

放置功能的文件的名称是什么?这是应该导入的名称。说:

您有一个名为null的文件,其中包含以下内容:

wavefunctionfile.py

您现在可以在与文件相同的目录中启动python并执行以下操作:

def wavefunction(a,b):
    print(a)
    print(b)
    return a+b

这将输出

>>> import wavefunctionfile as w
>>> w.wavefunction(3,4)

答案 1 :(得分:0)

from WaveLengthCalFile import WaveLengthCal应该有效,但我觉得如果上述方法不起作用那么还有其他事情发生......

请注意,您需要配置IDE才能使用它。在Pycharm中,您可以右键单击WaveLengthCalFile所在的目录,然后单击“标记为源”

See this pic for more info

在上图中,我从一个名为moonbase.py的文件中导入一个名为a_func的函数,该函数完全展示了您所需的功能