[Python] 10강 - 모듈

2025. 4. 21. 01:12·⚡Python

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
'⚡Python' 카테고리의 다른 글
  • [Python] 11강 - 파일
  • [Python] 10강 - 객체지향
  • [Python] 9강 - 함수
  • [Python] 파이썬 인터프리터(Interperter) 쉽게 이해하기
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (131) N
      • 🎓방송통신대학교 (18)
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (3)
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (2)
      • ☕Java (10)
        • 📝Java Programming (9)
        • 🧩Java Design Pattern (1)
      • 🌳Spring (7) N
        • 🌱Spring Framework (4)
        • 🌱Spring Security (1) N
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방통대
    파이썬
    Java
    메모리
    컴파일러
    자바
    방송대
    유비쿼터스 컴퓨팅
    컴퓨터의 이해
    spring
    Spring Framework
    함수
    유비쿼터스
    선택구조
    방송통신대학교
    확장관계
    세계화
    Python
    클래스
    스프링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[Python] 10강 - 모듈
상단으로

티스토리툴바