__name__
entry point (또는 main) : 프로그래밍 언어에서 프로그램의 진입점 !
이러한 entry point (또는 main) 메인 내부에서의 name 은 "main"
__name__
다른 스크립트에서 해당 모듈을 import하여 사용하는 경우, name 변수는 해당 모듈의 실제 이름으로 설정됩니다.
name 변수는 주로 모듈의 특정 코드 블록이 실행되어야 하는지, 임포트되었을 때는 실행되지 않아야 하는지를 결정하는 데 사용됩니다. 보통 if name == "main": 구문을 사용하여 스크립트 파일이 직접 실행될 때만 특정 코드 블록이 실행되도록 조건을 설정하는 용도로 활용됩니다.
__name__
활용하기모듈(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
__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__
설정을 알려주는 역할을 합니다. 그러나 오류가 실제로 나타나지 않는다면, 코드가 정상적으로 작동하는 것으로 간주할 수 있습니다. (일단 넘어감 ㅎㅅㅎ)