반응형
내장 변수 name
파이썬에서 내장 변수 __name__
은 모듈의 이름을 나타내는 특별한 변수입니다. 이 변수는 모듈이 직접 실행되는지 아니면 다른 모듈에 의해 임포트(import)되는지 여부를 확인하는 데 사용됩니다.
__name__
의 동작 원리
- 스크립트가 직접 실행될 때:
__name__
변수는"__main__"
으로 설정됩니다. - 모듈이 임포트될 때:
__name__
변수는 모듈의 이름으로 설정됩니다.
이를 활용하면 모듈이 직접 실행될 때와 임포트될 때의 동작을 구분할 수 있습니다.
예제
예제 1: 기본 사용법
my_module.py
라는 파일을 만들고 다음과 같이 작성합니다:
# my_module.py
def hello():
print("Hello, World!")
if __name__ == "__main__":
print("my_module이 직접 실행되었습니다.")
hello()
else:
print("my_module이 임포트되었습니다.")
my_module.py
파일을 직접 실행하면:
$ python my_module.py
my_module이 직접 실행되었습니다.
Hello, World!
다른 스크립트에서 my_module
을 임포트하면:
# 다른 스크립트
import my_module
출력은 다음과 같습니다:
my_module이 임포트되었습니다.
예제 2: 모듈화된 코드
다음은 여러 파일로 나눠진 프로젝트에서 __name__
변수를 사용하는 예제입니다.
main.py
:
# main.py
import my_module
print("main.py가 실행되었습니다.")
my_module.hello()
my_module.py
:
# my_module.py
def hello():
print("Hello, World!")
if __name__ == "__main__":
print("my_module이 직접 실행되었습니다.")
else:
print("my_module이 임포트되었습니다.")
main.py
를 실행하면:
$ python main.py
my_module이 임포트되었습니다.
main.py가 실행되었습니다.
Hello, World!
이 예제는 my_module
이 다른 파일에 의해 임포트될 때와 직접 실행될 때의 동작을 구분합니다.
실습 과제
calculator.py
파일을 작성하세요. 이 파일에는 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하는 함수들이 포함되어 있어야 합니다.__name__
을 사용하여 직접 실행될 때만 간단한 계산을 테스트하도록 하세요.main.py
파일을 작성하여calculator
모듈을 임포트하고, 사용자가 입력한 두 숫자와 연산자를 기반으로 계산을 수행하는 프로그램을 만드세요.
실습 과제 답안
1. calculator.py
# calculator.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return "0으로 나눌 수 없습니다."
return a / b
if __name__ == "__main__":
print("calculator.py가 직접 실행되었습니다.")
# 간단한 테스트
print("3 + 5 =", add(3, 5))
print("10 - 4 =", subtract(10, 4))
print("6 * 7 =", multiply(6, 7))
print("8 / 2 =", divide(8, 2))
else:
print("calculator 모듈이 임포트되었습니다.")
2. main.py
# main.py
import calculator
def main():
a = float(input("첫 번째 숫자를 입력하세요: "))
b = float(input("두 번째 숫자를 입력하세요: "))
operation = input("연산자를 입력하세요 (+, -, *, /): ")
if operation == '+':
print("결과:", calculator.add(a, b))
elif operation == '-':
print("결과:", calculator.subtract(a, b))
elif operation == '*':
print("결과:", calculator.multiply(a, b))
elif operation == '/':
print("결과:", calculator.divide(a, b))
else:
print("유효하지 않은 연산자입니다.")
if __name__ == "__main__":
main()
이러한 구조로 프로그램을 작성하면 각 모듈이 독립적으로 동작할 수 있으며, 다른 모듈에 의해 임포트될 때와 직접 실행될 때의 동작을 명확히 구분할 수 있습니다.
'실버를 위한 코딩 > 파이썬 연습' 카테고리의 다른 글
[파이썬 연습] 어노테이션과 타입 힌트 (3) | 2024.08.13 |
---|---|
[파이썬 연습] 파이썬 데코레이터 (0) | 2024.08.12 |
[파이썬 연습] 예외 처리 작성하기 (1) | 2024.08.10 |
[파이썬 연습] 클래스와 객체 (0) | 2024.08.09 |
[파이썬 연습] 함수 (0) | 2024.08.08 |