본문 바로가기

Dev/python

파이썬 모듈

파이썬에서는 하나의 스크립트 프로그램을 모듈이라고 한다.

즉 .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)} 입니다.')

'Dev > python' 카테고리의 다른 글

파이썬3 함수에서의 화살표  (0) 2020.10.05
파이썬 self & __init__  (0) 2020.09.28
파이썬 함수(입출력)  (0) 2020.09.17
파이썬의 제어문  (0) 2020.09.16
파이썬 자료형(2)  (0) 2020.09.15