>

파이썬을 처음 접했고 별도의 파일로 만든 함수를 가져 오려고합니다. 코드를 실행하면"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

  • 답변 # 1

    signal 를 가져 오려고하는 것 같습니다.  자신의 파일 대신 표준 라이브러리에서. 다음과 같이 가져 오십시오 :

    from .signal import signal
    
    

    PS : Python을 처음 사용하기 때문에 __init__.py 가 있어야합니다.  다음과 같이 디렉토리에있는 파일 :

    /Parent
        __init__.py
        main.py
        signal.py
    
    

  • 답변 # 2

    chepner가 제안한대로 모듈 내장 모듈 signal 와 파이썬 이름이 충돌합니다

    이름이 중요하지 않으면 이름을 변경할 수 있습니다.

    이름이 중요한 경우 패키지를 만들어 파일을 넣은 다음 가져올 수 있습니다.

    예를 들어 디렉토리 트리는 다음과 같습니다

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

    그런 다음 signal_module 를 가져옵니다.  다음과 같이

    from signal_module import signal
    
    

    와이즈 비즈  파일을 가져옵니다.

    비어있을 수 있지만, 파이썬이 디렉토리를 패키지로 트리 화하려면 생성해야합니다.

    파이썬을 처음 접한다고 말했듯이이 답변을 살펴보면 __init__.py 의 중요성에 대해 더 많이 알 수 있습니다.

    __init__.py

관련 자료

  • 이전 파일이 아닌 버퍼 인 Nodejs 스트림으로 파이프하는 방법은 무엇입니까?
  • 다음 javascript - 입력 필드에 붙여 넣을 때 캐치에 반응하여 줄 바꿈 또는 줄 바꿈 제거