我是Python新手,我正在尝试导入我在单独文件中创建的函数。当我运行代码时,我得到“TypeError:signal()缺少1个必需的位置参数:'handler'”。我认为这意味着信号函数没有传递一个参数,但我很确定这是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
答案 0 :(得分:0)
您似乎正在尝试从标准库而不是您自己的文件中导入signal
。尝试像这样导入它:
from .signal import signal
PS:由于您不熟悉Python,因此您还应该确保目录中有一个__init__.py
文件,如下所示:
/Parent
__init__.py
main.py
signal.py
答案 1 :(得分:0)
正如chepner所建议的那样,模块名称与内置模块中的pythons冲突signal
如果名称不重要,则可以更改名称。
如果名称很重要,那么您可以创建一个包并将文件放入其中,然后导入它。
例如,以下将是您的目录树
signal_module/
├── __init__.py
└── signal.py
original_file.py
然后按如下方式导入signal_module
from signal_module import signal
__init__.py
文件已导入。
它可以为空,但需要为python创建以将目录作为包树。
如你所说,你是python的新手,请查看this answer以了解__init__.py
的重要性