>  기사  >  백엔드 개발  >  -m을 사용하여 Python 코드를 실행할 때 호출의 차이점은 무엇입니까?

-m을 사용하여 Python 코드를 실행할 때 호출의 차이점은 무엇입니까?

DDD
DDD원래의
2024-10-22 21:28:30803검색

What are the Differences in Invocation when Executing Python Code with -m?

-m을 사용한 Python 코드 실행의 호출 차이점 이해

Python 인터프리터는 라이브러리 모듈을 실행할 수 있는 -m 옵션을 제공합니다. __main__ 모듈 내의 스크립트로. 이 접근 방식은 -m 옵션 없이 스크립트를 직접 실행하는 것과 다르기 때문에 특정 차이점과 의미가 있습니다.

실질적인 차이점

-m을 사용할 때 Python은 패키지를 다르게 관리합니다. -m 없이 패키지를 실행하려고 하면 인터프리터는 이를 일반 스크립트로 처리합니다. 반대로 -m을 사용하면 패키지를 가져올 수 있으며 상대 가져오기는 패키지를 시작점으로 올바르게 간주합니다.

예를 들어 a.py에서 다음 코드를 고려하세요.

<code class="py">if __name__ == "__main__":
    print(__package__)
    print(__name__)</code>

python a.py를 실행하면 다음이 발생합니다.

None
__main__

반면 python -m a를 사용하면 다음이 발생합니다.

""
__main__

여기서 파일이 다음과 같기 때문에 첫 번째 경우 __package__ 변수는 비어 있습니다. 스크립트로 실행됩니다. -m을 사용하면 모듈이 패키지 내에 없기 때문에 __package__는 빈 문자열로 설정됩니다.

패키지이름에 대한 설명

__package__의 경우:

  • -m 없이 실행되는 스크립트의 경우 __package__는 패키지가 될 수 없으므로 None으로 설정됩니다.
  • 다음에 있는 -m으로 실행되는 모듈의 경우 packages에서 __package__는 패키지 이름으로 설정됩니다.

__name__의 경우:

  • 스크립트 실행 시 생성되는 main 모듈을 참조합니다.
  • -m으로 실행되는 패키지의 경우 sys.modules['__main__']에 저장된 전역 네임스페이스를 참조합니다. -m을 사용하여 패키지를 실행하면 패키지의 main 모듈이 실행됩니다.

패키지 실행에 대한 의미

패키지 실행 -m을 사용하는 스크립트에는 패키지 내에 __main__.py 모듈이 필요합니다. 이 모듈은 Python이 -m 스위치를 사용하여 패키지를 실행할 때 진입점 역할을 합니다.

위 내용은 -m을 사용하여 Python 코드를 실행할 때 호출의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.