반응형

목차

  • 모듈이란?
    1. 모듈의 정의
    2. 모둘 생성
    3. __name__
    4. if __name__ == "__main__":
  • 패키지란?
    1. 패키지
    2. 엔트리 포인트(entry point)
    3. 패키지 관리 시스템
    4. 패키지 생성

모듈의 정의

Python에서 모듈은 일반적으로 함수, 클래스, 변수로 구성된 Python 코드를 포함하는 파일로, 다른 Python 스크립트에서 가져와서 사용할 수 있습니다. 모듈은 코드를 더 작은 독립된 조각으로 나누어 정리하고 재사용하는 방법입니다. 모듈을 사용하면 코드를 복제하지 않고도 여러 스크립트나 프로젝트에서 기능을 공유할 수 있으므로 유지 관리와 업데이트가 더 쉬워집니다.

모듈의 주요 목적은 코드 재사용성, 모듈성 및 유지보수성을 가능하게 하는 것입니다. 모듈을 가져오면 해당 모듈의 모든 함수, 클래스, 변수에 액세스할 수 있으므로 자체 스크립트에서 사용할 수 있습니다.

모듈은 파일명으로 식별되며 Python 모듈의 파일 확장자는 .py입니다. 스크립트에서 모듈을 사용하려면 파일 확장자 없이 모듈 이름 뒤에 import 문을 사용해야 합니다. 예를 들어 example_module.py라는 이름의 모듈이 있는 경우 다음과 같이 스크립트로 가져올 수 있습니다:

import example_module


모듈을 가져온 후에는 모듈 이름 앞에 점 하나를 붙여서 모듈의 함수, 클래스, 변수를 사용할 수 있습니다. 예를 들어

result = example_module.some_function()


모듈에서 특정 함수나 클래스를 가져오려면 from 키워드를 사용하거나, 편의를 위해 모듈이나 그 멤버에 별칭을 지정하려면 as 키워드를 사용할 수도 있습니다.


모둘 생성

Python에서 모듈은 간단하게 만들 수 있습니다. 모듈은 기본적으로 파이썬 코드가 저장된 .py 파일입니다. 이 파일에 함수, 클래스, 변수 등을 정의하면 다른 파이썬 코드에서 이 모듈을 사용할 수 있습니다. 다음은 모듈을 만드는 방법과 예시입니다.

1. 모듈 파일 생성
먼저 새로운 .py 파일을 만들어 봅시다. 예를 들어, mymodule.py라는 이름으로 파일을 생성할 수 있습니다.

2. 모듈에 코드 추가
mymodule.py 파일에 함수, 클래스, 변수 등을 정의합니다.

예시:

# mymodule.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

pi = 3.141592


위의 예시에서는 두 개의 함수(add, subtract)와 하나의 변수(pi)를 정의했습니다.

3. 다른 파이썬 코드에서 모듈 사용
이제 다른 파이썬 코드에서 mymodule.py를 사용할 수 있습니다. import 문을 사용하여 모듈을 불러올 수 있습니다.
예시:

# main.py

import mymodule

result1 = mymodule.add(1, 2)
print(result1)  # 출력: 3

result2 = mymodule.subtract(5, 3)
print(result2)  # 출력: 2

print(mymodule.pi)  # 출력: 3.141592


위의 예시에서는 main.py 파일에서 mymodule을 import하여 정의된 함수와 변수를 사용했습니다.

모듈을 만들고 사용하는 방법은 이처럼 간단하며, 코드를 재사용하고 조직화하는 데 도움이 됩니다. 다양한 기능을 모듈별로 분리하여 관리하면 유지 보수성도 향상됩니다.


__name__

Python에서 특수 변수 __name__은 Python 스크립트가 기본 프로그램으로 실행되는지 또는 다른 스크립트에 모듈로 가져오는지 결정하는 데 사용됩니다. Python 스크립트가 실행될 때 스크립트가 기본 프로그램으로 실행되는 경우 인터프리터는 __name__ 변수를 "__main__"으로 설정합니다. 스크립트를 다른 스크립트에 모듈로 가져오는 경우 __name__ 변수는 스크립트 이름으로 설정됩니다(.py 확장자 없음).

이는 스크립트가 모듈로 가져올 때가 아니라 기본 프로그램으로 실행될 때만 실행되어야 하는 일부 코드를 스크립트에 포함하려는 경우에 유용합니다. 예를 들면 다음과 같습니다.

def my_function():
    print("This is my function.")

if __name__ == "__main__":
    print("This script is being run as the main program.")
    my_function()
else:
    print("This script is being imported as a module.")


이 예에서 if __name__ == "__main__": 블록 내부의 print 문과 my_function()에 대한 호출은 스크립트가 기본 프로그램으로 실행될 때만 실행됩니다. 스크립트를 모듈로 가져오면 print 문과 함수 호출을 건너뛰고 else 블록만 실행합니다.


if __name__ == "__main__"

if __name__ == "__main__":은 스크립트가 기본 프로그램으로 실행되는지 또는 다른 스크립트에 모듈로 가져오는지 결정하는 데 사용되는 일반적인 Python 관용구입니다. 이렇게 하면 스크립트를 모듈로 가져올 때 실행되는 코드에서 프로그램의 기본 논리를 분리할 수 있습니다.

Python 스크립트가 실행될 때 스크립트가 기본 프로그램으로 실행되는 경우 인터프리터는 __name__ 변수를 "__main__"으로 설정합니다. 스크립트를 다른 스크립트에 모듈로 가져오는 경우 __name__은 스크립트 이름(파일 확장자 없음)으로 설정됩니다.

if __name__ == "__main__":을 사용하는 방법은 다음과 같습니다.

1. main() 함수 또는 프로그램의 기본 논리를 캡슐화하는 유사한 함수를 정의합니다.

def main():
    print("This is the main function of the script.")


2. 스크립트의 일부인 다른 함수나 클래스를 작성합니다.

def another_function():
    print("This is another function.")


3. 스크립트 끝에 if __name__ == "__main__": 블록을 추가하고 main() 함수 또는 1단계에서 정의한 함수를 호출합니다.

if __name__ == "__main__":
    main()


스크립트를 메인 프로그램으로 실행하면 main() 함수가 실행되고 "This is the main function of the script"라는 출력이 표시됩니다. 스크립트를 모듈로 다른 스크립트로 가져오면 main() 함수가 자동으로 실행되지 않지만 필요한 경우 여전히 명시적으로 호출할 수 있습니다.

if __name__ == "__main__":을 사용하면 스크립트의 기본 논리가 기본 프로그램으로 실행될 때만 실행되도록 할 수 있습니다. 이렇게 하면 코드를 보다 효과적으로 구성하고 모듈식으로 만들 수 있습니다. 이해하기 쉽습니다.


반응형