파이썬 중급 - 모듈

이상해씨·2021년 10월 8일
0

자료구조, 알고리즘

목록 보기
15/20
post-custom-banner

◾모듈

  • 모듈 : 이미 만들어진 기능, 특정 기능을 가지고 있는 파이썬 파일
    • 계산 모듈 : math
    • 난수 모듈 : random
    • 날짜/시간 모듈 : time, datetime
  • 파이썬 모듈 : 내부 모듈, 외부 모듈, 사용자 모듈
    • 내부 모듈 : 파이썬 설치 시 기본적으로 사용할 수 있는 모듈
    • 외부 모듈 : 별도 설치 후 사용할 수 있는 모듈
    • 사용자 모듈 : 사용자가 직접 만든 모듈
# 실습
import random

rNum10 = random.randint(1, 10)
print(f'rNum10 : {rNum10}')

rNums100 = random.sample(range(101), 10)
print(f'rNums100 : {rNums100}')
  • 모듈 제작 : 함수, 클래스 등을 작성한 파이썬 파일(.py)을 제작
# 모듈 사용
# 계산 모듈 calculator.py
import calculator

calculator.add(20, 10)
calculator.sub(20, 10)
calculator.mul(20, 10)
calculator.div(20, 10)
  • 모듈 사용 : import, from..import.., as
    • import : 모듈 임포트
    • from .. import .. : 모듈내의 특정 기능만 임포트
    • as : 모듈에 대한 별명 작성하여 이름을 단축시킬 수 있다
# 모듈 사용을 위해 import
import calculator

calculator.add(10, 20)

# from .. import ..
# 콤마(,)로 구분하여 여러 기능을 임포트할 수 있다.
from calculator import add, mul

add(10, 20)
mul(10, 20)

# as
import calculator as cal

cal.add(10, 20)
cal.mul(10, 20)

◾실행(메인) 파일

  • 전역 변수 __name__ : 모듈 이름이 저장되거나 __main__이 저장
    • __main__ : 실행(메인) 파일임을 의미
    • 모듈 이름 : import된 모듈임을 의미
import calculator

print(calculator.__name__)
print(__name__)
  • if __name = '__main' : 메인 파일일 경우에만 실행
    • 각 모듈의 테스트 코드를 작성할 수 있다.
# 메인일 경우에만 실행
if __name__ == '__main__':
    print(f'__name__ : {__name__}')

◾패키지

  • 패키지 : 관련있는 모듈들을 모아 두는 것
    • 관련있는 모듈을 그룹으로 관리할 수 있다.
    • CalculatorForInt : addCal, subCal, mulCal, divCal
    • CalculatorForFloat : addCal, subCal, mulCal, divCal
# 패키지 사용
# CalculatorForInt 사용
from CalculatorForInt import addCal, subCal, mulCal, divCal

print(addCal.add(10, 20))
print(subCal.sub(10, 20))
print(mulCal.mul(10, 20))
print(divCal.div(10, 20))
  • site_packages : 어디서나 사용할 수 있는 범용 모듈로 만드는 것
    • site_packages 경로를 확인하여 해당 경로에 패키지를 추가
# sys : 시스템 정보를 가진 모듈
# 현재 시스템의 path 검색
import sys

for path in sys.path:
    print(path)

◾자주 사용하는 모듈

  • 자주 사용하는 모듈 : math(수학), random(난수), time(시간)
# 수학 관련 함수
# 합 : sum
listVar = [2, 5, 3.14, 58, 10, 2]
print(sum(listVar))
# 최대값 : max
print(max(listVar))
# 최소값 : min
print(min(listVar))
# 거듭제곱 : pow
print(pow(2, 3))
# 반올림 : round
print(round(3.141592, 1))
# ------------------------------------------------------
# math 모듈
import math

# 절대값
print(f'math.fabs(-10) : {math.fabs(-10)}')
print(f'math.fabs(-0.12895) : {math.fabs(-0.12895)}')

# 올림
print(f'math.ceil(5.21) : {math.ceil(5.21)}')
print(f'math.ceil(-5.21) : {math.ceil(-5.21)}')

# 내림
print(f'math.floor(5.21) : {math.floor(5.21)}')
print(f'math.floor(-5.21) : {math.floor(-5.21)}')

# 버림
print(f'math.trunc(5.21) : {math.trunc(5.21)}')
print(f'math.trunc(-5.21) : {math.trunc(-5.21)}')

# 최대공약수
print(f'math.gcd(14, 21) : {math.gcd(14, 21)}')

# 팩토리얼
print(f'math.factorial(10) : {math.factorial(10)}')

# 제곱근
print(f'math.sqrt(4) : {math.sqrt(4)}')
print(f'math.sqrt(12) : {math.sqrt(12)}')
# ------------------------------------------------------
# time 모듈
import time

# 시스템 시간 반환
lt = time.localtime()
print(f'time.localtime():{lt}')
print(f'lt.tm_year : {lt.tm_year}')
print(f'lt.tm_year : {lt.tm_mon}')
print(f'lt.tm_year : {lt.tm_mday}')
print(f'lt.tm_year : {lt.tm_hour}')
print(f'lt.tm_year : {lt.tm_min}')
print(f'lt.tm_year : {lt.tm_sec}')
print(f'lt.tm_year : {lt.tm_wday}')
print(f'lt.tm_year : {lt.tm_yday}')
print(f'lt.tm_year : {lt.tm_isdst}')

◾객체 지향 프로그래밍

  • 객제치향 프로그래밍 : 객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성
    • 계산기
      • 속성 : 숫자
      • 기능 : 덧셈, 뺄셈, ...
    • 자동차
      • 속성 : 색상, 길이, 가격, ...
      • 기능 : 전진, 후진, 정지, ...
    • 객체(Object) : 속성(Attribute) + 기능(Function)
  • 객체 생성 : 클래스에서 생성
    • 자동차 클래스
      • 속성 : 색상, 길이, 가격, ...
      • 기능 : 전진, 후진, 정지, ...
    • 객체 생성 : 자동차 객체1, 자동차 객체2, 자동차 객체3, ...
  • 객체 사용의 장점 : 코드 재사용, 모듈화에 좋다.
    • 자동차A : 배터리 일체형(부품 결합도 높음)
    • 자동차B : 배터리 교체형(부품 결합도 낮음 -> 가장 이상적인 프로그램이 될 수 있다.)
      • 재사용, 수정 등에 유용하다.
    • 자동차C : 배터리 충전형(부품 결합도 높음)
profile
후라이드 치킨
post-custom-banner

0개의 댓글