혼자보기위한python🌕모듈4️⃣

이풀싹·2023년 6월 22일
0

파이썬_BASIC

목록 보기
13/13
post-thumbnail

1️⃣ name == "main"

(1) __name__

entry point (또는 main) : 프로그래밍 언어에서 프로그램의 진입점 !
이러한 entry point (또는 main) 메인 내부에서의 name 은 "main"

(2) 모듈의 __name__

다른 스크립트에서 해당 모듈을 import하여 사용하는 경우, name 변수는 해당 모듈의 실제 이름으로 설정됩니다.

name 변수는 주로 모듈의 특정 코드 블록이 실행되어야 하는지, 임포트되었을 때는 실행되지 않아야 하는지를 결정하는 데 사용됩니다. 보통 if name == "main": 구문을 사용하여 스크립트 파일이 직접 실행될 때만 특정 코드 블록이 실행되도록 조건을 설정하는 용도로 활용됩니다.

(3) __name__ 활용하기

test_module.py 로 실행했을때 🔥

main.py 로 실행했을때 🔥


2️⃣ package

모듈(Module)패키지(Package)는 파이썬에서 코드를 구성하고 구성 요소를 구성하는 데 사용되는 개념입니다. 다음은 모듈과 패키지의 차이점을 설명해드리겠습니다:

모듈(Module) :

모듈은 파이썬 코드가 포함된 파일입니다. 확장자가 .py인 파일이 일반적인 모듈입니다.
모듈은 변수, 함수, 클래스 등의 정의와 코드를 포함할 수 있습니다.
코드 재사용과 구조화를 위해 모듈을 사용할 수 있습니다.
모듈은 다른 파이썬 스크립트에서 import 문을 사용하여 임포트(import)하여 사용할 수 있습니다.
예를 들어, math.py라는 모듈 파일에는 수학 관련 함수와 상수가 포함될 수 있습니다. 다른 스크립트에서 import math를 사용하여 해당 모듈을 임포트하여 함수와 상수를 사용할 수 있습니다.

패키지(Package) :

패키지는 관련된 모듈들의 집합을 담고 있는 디렉토리입니다. 일반적으로 디렉토리 안에 __init__.py 파일이 있으면 해당 디렉토리를 패키지로 인식합니다.
패키지는 모듈의 구조화된 조직화를 제공하여 코드를 논리적으로 그룹화할 수 있습니다.
패키지는 하위 패키지와 모듈을 포함할 수 있으며, 패키지 내에 다양한 모듈이 있을 수 있습니다.
패키지는 .(점)을 사용하여 하위 패키지 또는 모듈에 접근할 수 있습니다.
예를 들어, my_package라는 패키지 안에 utils.py와 sub_package라는 하위 패키지가 있다면 my_package.utils와 my_package.sub_package로 접근할 수 있습니다.
요약하자면, 모듈은 단일 파일로 코드를 구성하고, 패키지는 모듈들의 구조화된 집합으로 코드를 구성합니다. 패키지는 모듈을 논리적으로 그룹화하여 코드 구조를 조직화하고, 모듈은 코드의 재사용과 모듈화를 지원합니다.

😫 __init__.py

  • package 를 읽을때 패키지 내부의 모듈들을 한꺼번에 가져오고 싶을때가 있습니다. 이럴때는 폴더내부에 __init__.py 파일을 만들어 사용합니다!

__init__.py 에서는 __all__ 이라는 이름의 리스트를 만드는데, 이 리스트에 지정한 모듈들이
from <packge 이름 > import * 할때 전부 읽어집니다 !

나는 계속 "module_b is specified in all but is not present in module" 메시지가 나와서 (-_-) chat gpt 물어보니까

실행 중에 "module_b is specified in all but is not present in module"와 같은 오류 메시지가 나타나지 않고 코드가 정상적으로 실행된다면, 해당 오류 메시지는 무시해도 됩니다.

일반적으로, all 변수는 모듈이나 패키지에서 외부로 공개할 요소들의 목록을 정의합니다. all에 포함된 요소들은 외부에서 from module import * 형식으로 일괄적으로 가져올 수 있습니다.

라고 ...
하지만 이 경우에는 "module_b is specified in all but is not present in module"와 같은 오류 메시지가 나타나지 않으므로,(????) __all__에 지정된 모듈이 실제로 모듈에 존재한다고 가정할 수 있습니다. 따라서 코드가 정상적으로 실행되는 것은 예상대로입니다.

오류 메시지는 개발자에게 잘못된 __all__ 설정을 알려주는 역할을 합니다. 그러나 오류가 실제로 나타나지 않는다면, 코드가 정상적으로 작동하는 것으로 간주할 수 있습니다. (일단 넘어감 ㅎㅅㅎ)

0개의 댓글