2017-10-18 72 views
-1

我對Python很新穎,我試圖導入我在一個單獨的文件中創建的函數。當我運行代碼時,我得到「TypeError:signal()缺少1所需的位置參數:'處理程序'」。我認爲這意味着信號函數沒有被傳遞一個參數,但我確信這是for循環的作用。我哪裏錯了?此外,這些文件位於工作目錄的一部分所在的同一文件夾中。調用該函數的代碼是:導入的函數不能正常工作

import numpy as np 

t=np.linspace(-5,5,200) 

import signal 

y=[] 
for i in t: 
    y.append(signal.signal(i)) 

函數代碼保存在名爲signal.py的文件中。該代碼是:

def signal(t): 
    import numpy as np 
    y=np.cos(t)*np.exp(-abs(t)) 
    return y 
+3

的重要性,「它不工作」是沒有問題的具體說明。 – khelwood

+0

的確,我已經更新了更具體的問題。 –

+2

'signal'是標準庫中的一個模塊;你正在導入,而不是你的'signal.py'。 – chepner

回答

0

看來你正試圖從標準庫,而不是你自己的文件導入signal。嘗試導入這樣的:

from .signal import signal 

PS:既然你是新來的Python,你還應該確保你有一個__init__.py文件中的目錄,例如:

/Parent 
    __init__.py 
    main.py 
    signal.py 
+0

謝謝!現在看來是一個愚蠢的問題。 –

+0

我的榮幸。沒有問題是愚蠢的,它可能仍然有助於某人。 –

+0

@TomWeisner這是一個非常現實的問題,導致了https://www.python.org/dev/peps/pep-0328/中的Python變化。 – chepner

0

至於建議由chepner,你有一個模塊名稱與python內置模塊衝突signal

如果名稱不重要,那麼您可以更改名稱。

如果名稱很重要,那麼您可以創建一個包並將該文件放入該文件中,然後將其導入。

例如,以下將是你的目錄樹

signal_module/ 
├── __init__.py 
└── signal.py 
original_file.py 

然後導入signal_module如下

from signal_module import signal 

__init__.py文件導入。

它可以是空的,但它需要爲python創建樹形目錄作爲包。

至於你說你是新的蟒蛇,看看this answer瞭解更多關於__init__.py