모듈이란 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있도록 만든 파이썬 파일이라고도 할 수 있다. 우리는 파이썬으로 프로그래밍을 할 때 매우 많은 모듈을 사용한다. 다른 사람들이 이미 만들어 놓은 모듈을 사용할 수도 있고 우리가 직접 만들어 사용할 수도 있다.
파이썬에서 모듈은 코드의 재사용과 구조화를 돕는 중요한 개념이다. 모듈은 파이썬 파일(.py)로 구현되며, 이 파일 안에 함수, 변수, 클래스, 또는 다른 코드 요소를 포함할 수 있다. 이러한 멤버들은 모듈을 구성하고 모듈의 기능을 제공한다. 다른 파이썬 스크립트에서 모듈을 가져와 사용할 수 있으며, 이것은 코드의 재사용과 유지 관리를 용이하게 한다.
# 모듈 내의 함수 정의
def add(a, b):
return a + b
# 모듈 내의 변수 정의
PI = 3.14159
# 모듈 내의 클래스 정의
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} says woof!")
다른 파이썬 스크립트에서 모듈을 사용하려면 import
문을 사용하여 모듈을 가져올 수 있다.
# 다른 스크립트에서 모듈 가져오기
import mymodule
result = mymodule.add(10, 5)
print(result)
print(mymodule.PI)
dog = mymodule.Dog("Buddy")
dog.bark()
위의 코드에서 mymodule
은 모듈 이름이고, 이를 통해 모듈 내의 함수, 변수, 클래스를 사용할 수 있다.
if __name__ == "__main__":
은 파이썬 스크립트를 모듈로 사용될 때와 스크립트로 직접 실행될 때의 차이를 처리하는데 사용되는 일반적인 코드 패턴이다.
위에 설명한 것 처럼 파이썬 스크립트는 다른 스크립트에서 모듈로 가져와 사용될 수 있다. 이때, 모듈 내의 함수, 변수, 클래스 등이 다른 스크립트에서 사용 가능하다. 그러나 때때로 스크립트를 모듈로 사용하는 경우와 스크립트 자체를 직접 실행하는 경우에 원하는 작업이 다를 수 있다. 이것을 구별하기 위해 if __name__ == "__main__":
블록을 사용한다.
if __name__ == "__main__":
의 의미는 다음과 같다.
- 스크립트가 직접 실행될 때: 스크립트가 커맨드 라인에서 직접 실행될 때 해당 블록 내의 코드가 실행됩니다. 이 블록은 스크립트를 실행할 때 진입점(entry point) 역할을 합니다.
- 스크립트가 모듈로 사용될 때: 스크립트가 다른 스크립트에서 모듈로 가져와 사용될 때 해당 블록 내의 코드는 실행되지 않습니다. 모듈로 사용될 때는 해당 블록이 무시되고 다른 스크립트에서 모듈 내의 함수, 변수 등을 사용할 수 있습니다.
def my_function():
# ...
if __name__ == "__main__":
# 스크립트가 직접 실행될 때 실행되는 코드
result = my_function()
print(result)
이 스크립트를 직접 실행하면 my_function
이 실행되고 결과가 출력된다. 그러나 이 스크립트가 다른 스크립트에서 모듈로 사용된다면 my_function
은 사용 가능하지만 if __name__ == "__main__":
블록 내의 코드는 실행되지 않는다.
이러한 패턴은 모듈로 사용되는 스크립트와 독립적으로 실행되는 스크립트의 논리를 분리하고 코드 재사용성을 향상시키는 데 도움을 준다.