모듈

혜쿰·2023년 10월 13일
0
post-thumbnail

📙 모듈이란?

모듈이란 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있도록 만든 파이썬 파일이라고도 할 수 있다. 우리는 파이썬으로 프로그래밍을 할 때 매우 많은 모듈을 사용한다. 다른 사람들이 이미 만들어 놓은 모듈을 사용할 수도 있고 우리가 직접 만들어 사용할 수도 있다.

📙 모듈의 멤버

파이썬에서 모듈은 코드의 재사용과 구조화를 돕는 중요한 개념이다. 모듈은 파이썬 파일(.py)로 구현되며, 이 파일 안에 함수, 변수, 클래스, 또는 다른 코드 요소를 포함할 수 있다. 이러한 멤버들은 모듈을 구성하고 모듈의 기능을 제공한다. 다른 파이썬 스크립트에서 모듈을 가져와 사용할 수 있으며, 이것은 코드의 재사용과 유지 관리를 용이하게 한다.

  1. 함수
    모듈 내에 정의된 함수는 해당 모듈의 기능을 제공한다. 다른 스크립트에서 모듈을 가져와 사용할 때 이러한 함수를 호출할 수 있다.
# 모듈 내의 함수 정의
def add(a, b):
    return a + b
  1. 변수:
    모듈 내에 정의된 변수는 모듈의 데이터를 저장하거나 공유하는 데 사용된다. 다른 스크립트에서 모듈을 가져와 이러한 변수의 값을 읽을 수 있다.
# 모듈 내의 변수 정의
PI = 3.14159
  1. 클래스:
    모듈 내에 정의된 클래스는 관련 메서드와 데이터를 하나의 단위로 묶어주는데 사용된다. 다른 스크립트에서 모듈을 가져와 클래스를 인스턴스화하거나 클래스의 메서드를 호출할 수 있다.
# 모듈 내의 클래스 정의
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__": 블록을 사용한다.

if __name__ == "__main__":의 의미는 다음과 같다.

  1. 스크립트가 직접 실행될 때: 스크립트가 커맨드 라인에서 직접 실행될 때 해당 블록 내의 코드가 실행됩니다. 이 블록은 스크립트를 실행할 때 진입점(entry point) 역할을 합니다.
  2. 스크립트가 모듈로 사용될 때: 스크립트가 다른 스크립트에서 모듈로 가져와 사용될 때 해당 블록 내의 코드는 실행되지 않습니다. 모듈로 사용될 때는 해당 블록이 무시되고 다른 스크립트에서 모듈 내의 함수, 변수 등을 사용할 수 있습니다.

📎 코드 예제

def my_function():
    # ...

if __name__ == "__main__":
    # 스크립트가 직접 실행될 때 실행되는 코드
    result = my_function()
    print(result)

이 스크립트를 직접 실행하면 my_function이 실행되고 결과가 출력된다. 그러나 이 스크립트가 다른 스크립트에서 모듈로 사용된다면 my_function은 사용 가능하지만 if __name__ == "__main__": 블록 내의 코드는 실행되지 않는다.
이러한 패턴은 모듈로 사용되는 스크립트와 독립적으로 실행되는 스크립트의 논리를 분리하고 코드 재사용성을 향상시키는 데 도움을 준다.




출처 : https://wikidocs.net/29

0개의 댓글