programing

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

instargram 2023. 8. 15. 09:46
반응형

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

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

그래서 만약 내가 가지고 있다면,

[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의 좋은 장이 있습니다.

"포함" 명령어를 작성하기만 하면 됩니다.

import os

def include(filename):
    if os.path.exists(filename): 
        execfile(filename)


include('myfile.py')

@삭제:

@bfick remark가 맞습니다. python 2와 3의 호환성을 위해서는 다음 중 하나가 필요합니다.

파이썬 2 및 3: 대안 1

from past.builtins import execfile

execfile('myfile.py')

파이썬 2 및 3: 대안 2

exec(compile(open('myfile.py').read()))

사용하는 경우:

import Math

그러면 수학의 함수를 사용할 수 있지만 수학을 해야 합니다.계산해 보세요. 그래서 그것은 분명히 당신이 원하지 않는 것입니다.

접두사를 붙이지 않고 모듈의 기능을 가져오려면 다음과 같이 명시적으로 이름을 지정해야 합니다.

from Math import Calculate, Add, Subtract

이제 계산, 추가 및 감산을 이름만으로 참조할 수 있습니다.수학에서 모든 함수를 가져오려면 다음을 수행합니다.

from Math import *

그러나 내용이 확실하지 않은 모듈에서는 이 작업을 수행할 때 매우 주의해야 합니다.동일한 함수 이름에 대한 정의가 포함된 두 모듈을 가져오면 한 함수가 다른 함수를 덮어씁니다.

쉽고 간단합니다. 다음과 같이 작업할 수 있습니다.

def run_file(path):
    return exec(open(path).read());

run_file("myfile.py");

파이썬 검사 모듈이 매우 유용하다는 것을 알게 되었습니다.

예를 들어 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()를 실행하면 python 모듈 이름을 반환합니다.

저는 제게 잘 맞는 댓글에 있던 답변을 강조하고 싶습니다.마이키가 말했듯이, '포함' 호출자의 범위에 포함된 파일에 변수를 포함시키려면 일반 파이썬으로 삽입하면 됩니다.이것은 PHP의 include 문처럼 작동합니다.Python 3.8.5에서 작동합니다.

대안 #1

import textwrap 
from pathlib import Path
exec(textwrap.dedent(Path('myfile.py').read_text()))

대안 #2

with open('myfile.py') as f: exec(f.read())

저는 대안 #2를 선호하며 제 웹사이트 개발에 사용해 왔습니다.

언급URL : https://stackoverflow.com/questions/714881/how-to-include-external-python-code-to-use-in-other-files

반응형