[python] 다른 파일에서 사용할 외부 Python 코드를 포함하는 방법은 무엇입니까?

파일에 메서드 모음이있는 경우 해당 파일을 다른 파일에 포함하지만 접두사 (예 : 파일 접두사)없이 호출 할 수있는 방법이 있습니까?

그래서 내가 가지고 있다면 :

[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 ()를 실행하면 파이썬 모듈 이름이 반환됩니다.


답변