Dev/python
파이썬 모듈
Okdol-Min
2020. 9. 21. 23:01
파이썬에서는 하나의 스크립트 프로그램을 모듈이라고 한다.
즉 .py를 포함하지 않는 파일의 이름 자체를 모듈로 사용할 수 있다.
아래 예제를 통해 이해해보도록 하자!
# 예제1
from typing import Any, Sequence
def max_of(a: Sequence) -> Any:
"""시퀀스형 a원소의 최댓값을 반환"""
maximum = a[0]
for i in range(1, len(a)):
if a[i] > maximum:
maximum = a[i]
return maximum
# 주의깊게 봐야할 부분!!!
# 예제2번에서 아래 if문이 수행안되는 이유는
# if __name__ == '__main__': 이거 때문이다!!
if __name__ == '__main__':
print('배열의 최댓값을 구합니다.')
num = int(input('원소 수를 입력하세요.:'))
x = [None] * num # 원소 수가 num인 리스트를 생성
for i in range(num):
x[i] = int(input(f'x[{i}]값을 입력하세요.:'))
print(f'최댓값은 {max_of(x)} 입니다.')
예제 1번에서 max_of 함수를 통해 최댓값 반환을 수행하는 함수가 정의되어 있다.
예제 2번에서는 max.py라는 파일의 .py를 제거 즉 max를 모듈로 받아서 max_of를 import해서 가져와서 사용한다.
주의깊게 봐야할 점은 예제 2번에서는 예제 1번에 if문 부터는 수행이 안된다는 점이다.
__name__ 은 모듈 이름인 max를 가르키는데 즉 max.py 함수가 나자신(메인) 일경우에만 아래 if 문이 수행된다는 점이다!!
예제 2번에서는 예제 1번에서 함수 max_of 에서 return까지만 수행된다는 점이 포인트이다!!
# 예제 2번
from max import max_of
t = (4, 7, 5.6, 2, 3.14, 1)
s = 'string'
a = ['DTS', 'AAC', 'FLAC']
print(f'{t}의 최댓값은 {max_of(t)} 입니다.')
print(f'{s}의 최댓값은 {max_of(s)} 입니다.')
print(f'{a}의 최댓값은 {max_of(a)} 입니다.')