Python 모듈 활용 가이드

Python에서 모듈은 코드를 논리적으로 구성하고 재사용 가능한 단위로 만드는 데 필수적인 요소입니다. 모듈은 클래스, 함수, 변수 등을 포함하는 `.py` 확장자를 가진 파일입니다.

모듈 가져오기

Python에서 모듈을 사용하려면 `import` 문을 사용해야 합니다. 여러 가지 방법으로 모듈을 가져올 수 있습니다.

1. 전체 모듈 가져오기

가장 기본적인 방법은 `import` 키워드를 사용하여 모듈 전체를 가져오는 것입니다. 이 경우 모듈 내의 요소에 접근하려면 `모듈명.요소명` 형식으로 사용해야 합니다.


import time

print("작업 시작")
time.sleep(5)  # 5초 동안 실행을 일시 중지합니다.
print("작업 완료")

2. 특정 요소 가져오기

모듈에서 특정 함수나 클래스만 필요한 경우, `from ... import ...` 구문을 사용하여 해당 요소만 가져올 수 있습니다. 이렇게 하면 모듈 이름을 붙이지 않고 직접 요소 이름을 사용할 수 있습니다.

예를 들어, `bao` 패키지 내의 `x` 모듈에 있는 `hs` 함수를 가져온다고 가정해 보겠습니다.

x 모듈 (bao/x.py):


def greet_hello():
    print("안녕하세요!")

def show_message():
    print("이것은 메시지입니다.")

y 모듈 (bao/y.py):


from bao.x import greet_hello

greet_hello()

3. 모든 요소 가져오기 (권장하지 않음)

`from ... import *` 구문을 사용하면 모듈의 모든 요소를 현재 네임스페이스로 가져올 수 있습니다. 하지만 이 방법은 이름 충돌의 위험이 있고 코드의 가독성을 해칠 수 있으므로 일반적으로 권장되지 않습니다.

x 모듈 (bao/x.py):


def greet_hello():
    print("안녕하세요!")

def show_message():
    print("이것은 메시지입니다.")

y 모듈 (bao/y.py):


from bao.x import *

greet_hello()
show_message()

4. 별칭(Alias) 사용하기

모듈이나 특정 요소를 가져올 때 `as` 키워드를 사용하여 별칭을 지정할 수 있습니다. 이는 긴 모듈 이름을 짧게 줄이거나 이름 충돌을 피하는 데 유용합니다.

x 모듈 (bao/x.py):


def greet_hello():
    print("안녕하세요!")

def show_message():
    print("이것은 메시지입니다.")

y 모듈 (bao/y.py):


from bao.x import greet_hello as hello

hello()

자주 사용되는 내장 모듈

1. time 모듈

time 모듈은 시간 관련 기능을 제공합니다.


import time

# 1970년 1월 1일 0시 0분 0초 UTC 이후 경과된 시간을 초 단위로 반환합니다.
print(f"현재 타임스탬프: {time.time()}")

time.sleep(2) # 2초 동안 프로그램 실행을 일시 중지합니다.

# 현재 시간을 사람이 읽기 쉬운 형식으로 반환합니다.
print(f"현재 시간 (ctime): {time.ctime()}")

# 시간을 ASCII 형식으로 변환합니다.
print(f"현재 시간 (asctime): {time.asctime()}")

# 지정된 형식으로 현재 시간을 문자열로 반환합니다.
formatted_time = time.strftime("%H:%M:%S %Y-%m-%d")
print(f"형식화된 현재 시간: {formatted_time}")

from time import *를 사용하여 모든 요소를 가져온 경우:


from time import *

print(f"현재 타임스탬프: {time()}") # time.time()과 동일
sleep(2) # time.sleep(2)와 동일
print(f"현재 시간 (ctime): {ctime()}") # time.ctime()과 동일
print(f"현재 시간 (asctime): {asctime()}") # time.asctime()과 동일
print(f"형식화된 현재 시간: {strftime('%H:%M:%S %Y-%m-%d')}") # time.strftime(...)과 동일

2. random 모듈

random 모듈은 난수 생성과 관련된 다양한 함수를 제공합니다.


from random import *

# 0.0 이상 1.0 미만의 임의의 부동소수점 숫자를 생성합니다.
# print(f"0과 1 사이의 임의의 실수: {random()}")

# 지정된 범위(시작값 포함, 끝값 포함) 내의 임의의 정수를 생성합니다.
# print(f"1과 100 사이의 임의의 정수: {randint(1, 100)}")

# 지정된 범위(시작값 포함, 끝값 미포함) 내의 임의의 정수를 생성합니다.
# print(f"1부터 9까지의 임의의 정수: {randrange(1, 10)}")

# 지정된 범위에서 지정된 간격으로 임의의 정수를 생성합니다.
# print(f"1부터 9까지의 임의의 홀수: {randrange(1, 10, 2)}")
# print(f"2부터 9까지의 임의의 짝수: {randrange(2, 10, 2)}")

my_list = [1, 2, 3, 4, 5, 6]

# 리스트에서 지정된 개수만큼 임의의 요소를 선택하여 새 리스트로 반환합니다.
# print(f"리스트에서 2개 무작위 선택: {sample(my_list, 2)}")

# 비어 있지 않은 시퀀스(리스트, 튜플, 문자열 등)에서 임의의 요소를 하나 선택합니다.
print(f"리스트에서 무작위로 선택된 요소: {choice(my_list)}")

# 시퀀스의 모든 요소를 무작위로 섞습니다.
shuffle(my_list)
print(f"무작위로 섞인 리스트: {my_list}")

3. string 모듈

string 모듈은 일반적인 문자열 상수를 제공합니다.


import string

# 0부터 9까지의 숫자
print(f"숫자: {string.digits}")

# 16진수 문자
print(f"16진수 문자: {string.hexdigits}")

# 모든 소문자
print(f"소문자: {string.ascii_lowercase}")

# 모든 대문자
print(f"대문자: {string.ascii_uppercase}")

# 모든 알파벳 대소문자
print(f"알파벳: {string.ascii_letters}")

# 모든 알파벳 대소문자와 숫자
print(f"알파벳 + 숫자: {string.ascii_letters + string.digits}")

실습 과제

  1. 지정한 세 자리로 시작하는 임의의 휴대폰 번호를 생성하세요.
  2. 임의의 6자리 숫자 인증 코드를 생성하세요.

태그: python 모듈 import time Random

7월 25일 03:56에 게시됨