새로운 한 주가 시작됐다. 이번주에는 드디어 파이썬의 기본기 파트가 끝나고 데이터 분석 파트에 진입한다고 한다. 파이썬도 어려운 내용은 거의 끝났고 여러 기능들에 대한 사용법 정도만 남아 저번주 보다는 한결 수월했던 하루였다.
여러 기능들이 뭉쳐진 하나의 .py 파일
- 모듈을 사용하는 이유
- 코드의 분할 및 재사용
- 유지보수 용이성
- 네임 스페이스 분리로 충돌 방지
import hello
hello.introduce("taehyun")from hello import introduce
introduce("taehyun")from hello import *
introduce1("taehyun")
introduce2("taehyun", 27)import hello as h
h.introduce1("taehyun")
h.introduce2("taehyun", 27)calc.py
모듈로 불러와 사용
from my_package import calc as c
c.add(10, 20)from my_package.calc import add
add(10, 20) import math
# 1. 올림 / 내림
# round : 반올림 - 파이썬 내장 함수
round(3.141592, 2) # 3.14
# ceil : 올림, 소수점 지정 X
math.ceil(3.14) # 4
# floor : 내림, 소수점 지정 X
math.floor(3.14) # 3
# 2. 제곱, 제곱근
# pow(x, y) : 제곱 - x^y를 반환
math.pow(2, 3) # 8.0
# sqrt(x) : 제곱근 반환
math.sqrt(16) # 4.0
# 3. 상수
# pi : 원주율
math.pi # 3.141592653589793
# 4. 수학 계산 편의 기능
# factorial(x) : x! 팩토리얼 반환
math.factorial(5) # 120
# gcd(x, y) : 최대 공약수
math.gcd(12, 20) # 4
# lcm(x, y) : 최소 공배수
math.lcm(12, 20) # 60
# 1. 난수 생성
# seed(a) : 난수 발생 초기값(seed) 설정 - 최초 생성한 난수를 고정해야 할 때 사용
random.seed(42) # 42는 관습, 의미 x
# random() : 0이상 1미만의 float 난수 반환
random.random() # 0.053704578152930504
# uniform(a, b) : a이상 b이하의 float 난수 반환
random.uniform(1, 10) # 8.777831433340003
# ranint(a, b) : a이상 b이하의 int 난수 반환
random.randint(1, 100) # 95
# randrange(start, stop, step) : 범위 안의 int 난수 반환, 간격 지정 가능
random.randrange(0, 100, 5) # 35
# 2. 랜덤 선택
fruits = ["apple", "banana", "watermelon", "grape", "orange"]
# choice(seq) : 시퀀스에서 임의의 요소 1개 반환
random.choice(fruits) # 'watermelon'
# choices(seq, k) : 시퀀스에서 "중복 허용" k개의 요소 리스트를 반환
random.choices(fruits, k=2) # ['grape', 'grape']
# sample(seq, k) : 시퀀스에서 "중복 없이" k개의 요소 리스트 반환
random.sample(fruits, k=2) # ['banana', 'orange']
# shuffle(seq) : 시퀀스의 ㅅ=요소를 무작위로 섞음 -> 원본 시퀀스를 변경
numbers = [1,2,3,4,5]
random.shuffle(numbers)
numbers # [2, 5, 1, 3, 4]
import datetime
# 1. 날짜/시간 구하기
# 현재 날짜와 시간 구하기
now = datetime.datetime.now() # datetime.datetime(2025, 7, 28, 13, 33, 11, 502332)
print(now)
# 오늘 날짜만 구하기
today = datetime.date.today() # datetime.date(2025, 7, 28)
# 2. 날짜/시간 형식 변환
formatted = now.strftime("%Y/%m/%d %H:%M:%S")
print(formatted) # 2025/07/28 13:40:21
parsed = datetime.datetime.strptime(formatted, "%Y/%m/%d %H:%M:%S")
parsed # datetime.datetime(2025, 7, 28, 13, 40, 21)
# 3. 날짜/시간 연산
dt = datetime.date(2025, 7, 7)
passed_time = today - dt
print(passed_time) # 21 days, 0:00:00
print(passed_time.days) # 21
# 4. 요일반환 : weekday
# 0 : 월요일 ~ 7 : 일요일
today.weekday() # 0
days = ["월", "화", "수", "목", "금", "토", "일"]
추석 = datetime.date(2025, 10, 6).weekday()
days[추석] # '월'
# datetime 또는 date 객체에는 년/월/일/ 시간 등이 속성으로 들어있음
datetime.datetime.now().year # 2025
datetime.date.today().day # 28
import calendar
# 1. 달력 조회
calendar.prmonth(2025, 9)
# September 2025
# Mo Tu We Th Fr Sa Su
# 1 2 3 4 5 6 7
# 8 9 10 11 12 13 14
# 15 16 17 18 19 20 21
# 22 23 24 25 26 27 28
# 29 30
calendar.prcal(2025) # 정렬된 캘린더 출력
calendar.calendar(2025) # 캘린더를 텍스트화해서 출력
calendar.month(2025, 9) # 캘린더를 텍스트화해서 출력
# 요일 반환
calendar.weekday(2025, 7, 7) # calendar.MONDAY
파이썬 표준 라이브러리는 정말 다양한 기능들이 있어서 잘 활용하면 여러 상황에서 편리하게 사용할 수 있을 것 같다. 모든 기능을 외울 수는 없으니 내용들을 잘 정리해두고 필요할 때마다 찾아보는 습관을 만들어야겠다.
모듈과 패키지를 직접 만들어 사용하는 방법도 배웠는데, 앞으로 코드가 점점 복잡해질 때 정말 유용할 것 같다는 생각이 들었다. 다만 평소에도 변수명을 정하는 데 어려움을 겪고 있는데, 모듈을 사용할 때는 이름 충돌 문제까지 고려해야 해서 더욱 신경 써야겠다