1. 모듈의 이해
(1) 모듈의 개념
- 클래스, 함수, 변수의 집합을 의미한다.
- 파이썬에선 파이썬 코드(.py 파일)를 하나의 파일 단위로 저장한 것을 모듈이라 함.
- 즉, 하나의 파일에 변수, 함수, 클래스 등을 모아두고 이걸 다른 파이썬 파일에서 import(불러오기)해서 이용을 한다.
(2) 모듈의 역할
- 파이썬 파일로 나눠서 유지보수성과 가독성을 좋게 만들 수 있음. 관리하기가 쉬움
- 또한, 라이브러리와 프레임워크식으로 불러와서 이용을 할 수도 있음. ( 특히 파이썬은 라이브러리가 많음 )
(3) 모듈, 패키지, 라이브러리 차이
- 모듈 : 클래스, 함수, 상수(변수)의 집합
- 패키지 : 하위 패키지 및 모듈의 집합
- 라이브러리 : 패키지 및 모듈의 집합
(4) 모듈 등록 방법
[1] 기본 import 문
import test
- 가장 흔하게 많이 쓰이는 방식
[2] 별칭 import 문
import test as t # 사용 시 t.함수명 방식으로 사용 가능
- 긴 모듈명을 갖는 경우 사용하면 좋음
[3] from import
from test import add # test 파일에 add() 함수만 import
- 특정 함수 또는 클래스만 임포트를 하는 방식이다.
(5) 모듈의 등록 확인
[1] dir 함수
- 네임스페이스에 등록되어 있는 모든 이름들을 리스트로 반환
import test
print(dir(test))
# test.py
def bin():
print("good")
- 해당 dir의 결과를 프린트로 찍어보면, 해당 test.py 모듈에 있는 함수나 변수 등을 볼 수 있다.
[2] help 함수
- 대화형 도움말 시스템 호출 또는 클래스나 메소드의 사용방법을 반환 해주는 함수
import math
help(math) # help(object) 방식 -> 기재해서 해당 함수의 설명을 들을 수 있음.
help() # 대화형 헬프 시스템 -> 실행시켜서 직접 쳐서 찾을 수 있음.
(6) 모듈의 제거
- 새 모듈의 함수, 변수 등의 이름이 겹치는 이유로 이전 모듈을 제거해야 할 때 사용을 한다.
[1] del 키워드
x = 10
del x
print(x) # NameError: name 'x' is not defined
- 예시코드 처럼 변수만 삭제가 가능한것이 아닌 함수 등 다양하게 삭제가 가능하다.
- del 키워드는 정의된 변수나 객체를 메모리에서 없애버리는 역할을 한다.
- 서비스간에 del 키워드는 위험하기 때문에 잘 사용이 되지는 않지만, 테스트에 사용하기에는 적합함
2. 유용한 모듈
(1) math 모듈
- 수학적 계산 문제를 해결하기 위한 수학 함수 및 상수의 집합 모듈이다.
- C 언어 표준에 정의된 수학적 계싼 함수를 내장
- pi, e와 같은 상수를 제공해주기도 함.
import math
# 제곱근
print(math.sqrt(25)) # 출력: 5.0
# 거듭제곱 (2의 3제곱)
print(math.pow(2, 3)) # 출력: 8.0
# 반올림 관련
print(math.floor(3.7)) # 출력: 3 (내림)
print(math.ceil(3.2)) # 출력: 4 (올림)
print(math.trunc(3.9)) # 출력: 3 (소수점 제거)
# 삼각함수
print(math.sin(math.pi / 2)) # 출력: 1.0
print(math.cos(0)) # 출력: 1.0
# 로그
print(math.log(100, 10)) # 출력: 2.0 (밑이 10인 로그)
# 팩토리얼
print(math.factorial(5)) # 출력: 120
# 상수
print(math.pi) # 출력: 3.141592...
print(math.e) # 출력: 2.718281...
# 각도 변환
print(math.degrees(math.pi)) # 출력: 180.0
print(math.radians(180)) # 출력: 3.141592...
- 예시처럼 수학적으로 유용하게 쓰이는 함수와 상수들의 집합이다.
(2) random 모듈
- 난수(random number) : 특정한 배열 순서나 규칙적인 의미가 없는, 임의의 수를 의미한다.
- 난수 관련된 생성 기능을 제공하는 모듈을 random 모듈이라 한다.
[1] random 모듈 멤버
# random 모듈 주요 함수 정리
import random
# 1. random.random()
# - 0.0 이상 1.0 미만의 실수를 반환
# 예: 0.345, 0.982 등
random.random()
# 2. random.randint(a, b)
# - a 이상 b 이하의 정수를 반환 (양쪽 끝 포함)
# 예: random.randint(1, 5) → 1, 2, 3, 4, 5 중 하나
random.randint(1, 5)
# 3. random.uniform(a, b)
# - a 이상 b 이하의 실수를 반환
# 예: random.uniform(1.0, 5.0) → 1.234 등
random.uniform(1.0, 5.0)
# 4. random.choice(seq)
# - 시퀀스(리스트, 튜플 등)에서 무작위로 하나 선택
# 예: random.choice(['a', 'b', 'c']) → 'a' 또는 'b' 또는 'c'
random.choice(['a', 'b', 'c'])
# 5. random.choices(seq, k=n)
# - 시퀀스에서 중복 허용하며 n개 선택
# 예: random.choices([1, 2, 3], k=2) → [2, 2] 또는 [1, 3] 등
random.choices([1, 2, 3], k=2)
(3) time 모듈
- 에포크 시간을 얻어 다양한 형식으로 표시하는 기능을 제공함.
- 에포크 시간이란, 컴퓨터 시스템에서 시간을 표현하기 위한 기준점과 측정 방법을 의미한다.
- 특정 기준 시점(에포크)부터 얼마나 시간이 흘렀는지를 "초 단위"로 나타내는 숫자를 의미한다.
- 에포크 시간의 기준점은 1970년 1월 1일 00시 00분 00초 (UTC)이다.
- 참고로 유닉스 시스템이 1970년 1월 1일을 기준으로 설정했기 때문임. 유닉스 시간이라고 함.
import time
# 1. 현재 에포크 시간 (1970년부터 지난 초)
epoch_time = time.time()
print("📌 현재 에포크 시간:", epoch_time)
# 2. 에포크 시간 → 로컬 시간 (struct_time 객체)
local_time = time.localtime(epoch_time)
print("📌 로컬 시간 (struct_time):", local_time)
# 3. 로컬 시간 → 보기 좋은 문자열
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
print("📌 포맷된 시간:", formatted_time)
# 4. 문자열 → struct_time (파싱)
time_str = "2025-04-23 15:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print("📌 문자열 파싱:", parsed_time)
# 5. struct_time → 에포크 시간
epoch_from_str = time.mktime(parsed_time)
print("📌 파싱된 시간의 에포크 값:", epoch_from_str)
# 6. 2초 대기
print("⏳ 2초 대기 중...")
time.sleep(2)
print("✅ 대기 완료")
'⚡Python' 카테고리의 다른 글
[Python] 11강 - 파일 (0) | 2025.04.23 |
---|---|
[Python] 10강 - 객체지향 (1) | 2025.04.18 |
[Python] 9강 - 함수 (0) | 2025.04.17 |
[Python] 파이썬 인터프리터(Interperter) 쉽게 이해하기 (1) | 2025.04.17 |
[Python] 7강 - 반복 구조 (0) | 2025.04.17 |