2017-10-11 13 views
0

我做了一個叫WaveLengthCal(d,T)函數如下如何使用功能在另一個Python文件

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) 

它不能很好地工作,這表明一個埃羅[R消息

> 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' 

我不知道爲什麼,因爲我已經把兩個輸入存在,但它不斷告訴我缺少論據之一。任何人有任何建議?

回答

0

你把功能放到哪個文件的名字是什麼?這是應該導入的名稱。你說:

你有一個文件名爲:wavefunctionfile.py,內容如下:

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

現在,您可以在同一目錄下的文件開始蟒蛇做到這一點:

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

這將輸出

3 
4 
7 
0

from WaveLengthCalFile import WaveLengthCal應該工作,但我覺得如果上述不起作用,那麼還有其他事情正在發生......

請注意,您將需要配置您的IDE以使用它。在Pycharm你可以右鍵點擊該目錄中WaveLengthCalFile是,然後單擊「標記爲源」

See this pic for more info

在上面的圖片,我導入從一個叫moonbase.py文件名爲a_func功能,這表明你的所需功能正好