파일에 메서드 모음이있는 경우 해당 파일을 다른 파일에 포함하지만 접두사 (예 : 파일 접두사)없이 호출 할 수있는 방법이 있습니까?
그래서 내가 가지고 있다면 :
[Math.py]
def Calculate ( num )
이렇게 부르는 방법 :
[Tool.py]
using Math.py
for i in range ( 5 ) :
Calculate ( i )
답변
다음과 같은 모듈로 다른 파일을 가져와야합니다.
import Math
Calculate
함수 앞에 모듈 이름을 붙이지 않으려면 다음과 같이하십시오.
from Math import Calculate
모듈의 모든 멤버를 가져 오려면 다음을 수행하십시오.
from Math import *
편집 : 여기 에이 주제에 대해 좀 더 깊이있는 Dive Into Python 의 좋은 장이 있습니다 .
답변
“include”명령을 작성하십시오.
import os
def include(filename):
if os.path.exists(filename):
execfile(filename)
include('myfile.py')
@Deleet :
@bfieck 발언이 정확합니다. python 2 및 3 호환성을 위해 다음 중 하나가 필요합니다.
Python 2 및 3 : 대안 1
from past.builtins import execfile
execfile('myfile.py')
Python 2 및 3 : 대안 2
exec(compile(open('myfile.py').read()))
답변
사용하는 경우 :
import Math
그러면 Math의 함수를 사용할 수 있지만 Math.Calculate를 수행해야하므로 당연히 원하지 않는 것입니다.
접두사없이 모듈의 함수를 가져 오려면 다음과 같이 명시 적으로 이름을 지정해야합니다.
from Math import Calculate, Add, Subtract
이제 이름만으로 계산, 더하기, 빼기를 참조 할 수 있습니다. Math에서 모든 함수를 가져 오려면 다음을 수행하십시오.
from Math import *
그러나 내용이 확실하지 않은 모듈로이 작업을 수행 할 때는 매우주의해야합니다. 동일한 함수 이름에 대한 정의를 포함하는 두 개의 모듈을 가져 오면 한 함수가 다른 함수를 덮어 쓰고 현명하지 않게됩니다.
답변
파이썬 검사 모듈이 매우 유용하다는 것을 알았습니다.
예를 들어 teststuff.py와 함께
import inspect
def dostuff():
return __name__
DOSTUFF_SOURCE = inspect.getsource(dostuff)
if __name__ == "__main__":
dostuff()
그리고 다른 스크립트 나 파이썬 콘솔에서
import teststuff
exec(DOSTUFF_SOURCE)
dostuff()
그리고 이제 dostuff 는 로컬 범위에 있어야하며 dostuff () 는 콘솔 또는 스크립트 _ name _ 을 반환하는 반면 test.dostuff ()를 실행하면 파이썬 모듈 이름이 반환됩니다.