250728 [ Day 16 ] - Python (13)

TaeHyun·2025년 7월 28일

TIL

목록 보기
16/182

시작하며

새로운 한 주가 시작됐다. 이번주에는 드디어 파이썬의 기본기 파트가 끝나고 데이터 분석 파트에 진입한다고 한다. 파이썬도 어려운 내용은 거의 끝났고 여러 기능들에 대한 사용법 정도만 남아 저번주 보다는 한결 수월했던 하루였다.

모듈 (Module)

여러 기능들이 뭉쳐진 하나의 .py 파일

  • 모듈을 사용하는 이유
    • 코드의 분할 및 재사용
    • 유지보수 용이성
    • 네임 스페이스 분리로 충돌 방지

모듈의 생성과 사용

  • .py 파일에 사용할 함수를 만들어 두고 작업중인 파일에서 import name(모듈 파일 이름) 으로 불러옴
  • import 방법 1
    import hello
    
    hello.introduce("taehyun")
  • import 방법 2
    from hello import introduce
    
    introduce("taehyun")
  • import 방법 3
    from hello import *
    
    introduce1("taehyun")
    introduce2("taehyun", 27)
    • 함수의 이름이 어디서 충돌이 일어날지 몰라 권장 X
  • import 방법 4
    import hello as h
    
    h.introduce1("taehyun")
    h.introduce2("taehyun", 27)
    • 가장 많이 사용되는 패턴
    • 상황에 따라 as를 사용해서 별칭 지정

  • calc.py

  • 모듈로 불러와 사용


패키지 (Package)

  • 모듈의 묶음
  • 모듈을 폴더 단위로 묶어놓은 것
  • 패키지 사용 방법 1
    from my_package import calc as c
    
    c.add(10, 20)
  • 패키지 사용 방법 2
    from my_package.calc import add
    
    add(10, 20)

파이썬 표준 라이브러리

math 모듈

  • 수학적 연산에 사용되는 모듈
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

random 모듈

  • 랜덤 값 (난수) 생성시 사용
# 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]


datetime 모듈

  • 날짜와 시간의 생성, 조작, 현실 변환과 같은 시간 관련 기능을 제공
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

calendar 모듈

  • 날짜와 달력 관련 기능을 제공
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


마치며

파이썬 표준 라이브러리는 정말 다양한 기능들이 있어서 잘 활용하면 여러 상황에서 편리하게 사용할 수 있을 것 같다. 모든 기능을 외울 수는 없으니 내용들을 잘 정리해두고 필요할 때마다 찾아보는 습관을 만들어야겠다.
모듈과 패키지를 직접 만들어 사용하는 방법도 배웠는데, 앞으로 코드가 점점 복잡해질 때 정말 유용할 것 같다는 생각이 들었다. 다만 평소에도 변수명을 정하는 데 어려움을 겪고 있는데, 모듈을 사용할 때는 이름 충돌 문제까지 고려해야 해서 더욱 신경 써야겠다

profile
Hello I'm TaeHyunAn, Currently Studying Data Analysis

0개의 댓글