한 걸음씩 기록하며

#.12 Module, Package 본문

Python

#.12 Module, Package

Haksae 2021. 12. 22. 15:18

1. 모듈(Module), 패키지(Package)

  • 모듈(Module) : 모듈은 변수, 함수, 클래스 등을 모아 놓은 스크립트 파일이다.
  • 패키지(Package) : 여러 모듈을 묶은 것
  • 모듈은 간단한 기능을 담을 대 사용, 패키지는 코드가 많고 복잡할 때 사용
  • 패키지는 기능들이 모듈 여러 개로 잘게 나누어져 있고, 관련된 모듈끼리 폴더에 모여있는 형태
  • 상대경로
  • .. : 부모 디렉토리
  • . : 현재 디렉토리

 

  • 모듈생성
    • 모듈: 파이썬의 정의와 문장들을 담고 있는 파일
    • 모듈 파일에는 확장자 .py를 붙인다
    • 모듈 파일 안에 함수를 선언한다

 

 

2. 모듈 사용

  • 반드시 import 문을 통해 내장 모듈을 이름 공간에 가져와야 한다
  • 패키지는 ’점으로 구분된 모듈 이름’을 써서 파이썬의 모듈 이름 공간을 구조화 하는 방법. 예를 들어, package_name.module_name()
  • 파이썬이 디렉터리를 패키지로 취급하게 만들기 위해서는 __init__.py 파일이 필요하다.
  • import 방법
    • from 모듈명 import 어트리뷰트 : 특정 어트리뷰트만 꺼낸다
    • from 모듈명 import *: 모듈에 있는 변수, 함수, 클래스 전부 꺼낸다
    • from 모듈명 import 어트리뷰트 as 이름 : 내가 지정하는 이름을 붙여 가져올 수 있다
  • 파이썬 기본 모듈
    • math (함수 관련 함수): sum, max, min, abs, pow, round, divmod
    • 함수비고math.ceil(x)소수점 올림math.floor(x)소수점 내림math.trunc(x)소수점 버림math.copysign(x, y)y의 부호를 x에 적용한 값math.fabs(x)float 절대값 - 복소수 오류 발생math.factorial(x)팩토리얼 계산 값math.fmod(x, y)float 나머지 계산math.fsum(iterable)float 합math.modf(x)소수부 정수부 분리
    • 함수비고math.pow(x, y)x의 y 제곱의 결과math.sqrt(x)x의 제곱근의 결과math.exp(x)e^x 결과math.log(x[, base])밑을 base로 하는 logx (base default 값은 e)
    • 삼각함수도 가능하다: sin, cos, tan, asin, ascos, aten, sinh, cosh, tanh, ashinh, acosh, atanh
    • random: 난수 발생관련 함수
    • random은 seed를 어떻게 설정하냐에 따라 생성되는 난수가 다르다.
    • datetime: 날짜 관련 모듈
    • 형식 지시자(directive)의미%y연도표기(00~99)%Y연도표기(전체)%b월 이름(축약)%B월 이름(전체)%m월 숫자(01~12)%d일(01~31)%H24시간 기준(00~23)%I12시간 기준(01~12)%M분(00~59)%S초(00~61)%p오전/오후%a요일(축약)%A요일(전체)%w요일(숫자 : 일요일(0))%j1월 1일부터 누적 날짜
    • 속성/메소드내용.year년.month월.day일.hour시.minute분.second초.weekday()월요일을 0부터 6까지
    • timedelta: 시간 연산을 가능케 한다
  • 예시 1
#square2.py 모듈 생성
base = 2

def square(self) :
    return base **self
#.1 모듈 자체를 임포트
import square2
#임포트

print(square2.base) #스퀘어2 모듈 속에 베이스
print(square2.square(10)) #스퀘어2 모듈 스퀘어 함수 속에 10을 넣어서 출력

#.2 모듈 안에 변수와 함수를 임포트
from square2 import base, square

print(base)
print(square(10))
  • 예시 2
#.person.py 모듈 생성 / Person 클래스 생성
class Person : #클래스
    def __init__(self, name, age, address) :
        self.name = name
        self.age = age
        self.address = address

    def greeting(self) :
        print('안녕하세요. 저는{0}입니다.'.format(self.name))
#.1 모듈을 임포트
import person

maria = person.Person('마리아', 20, '서울시')
maria.greeting()

#.2 모듈 안에 클래스 임포트
from person import Person

maria = Person('마리아', 20, '서울시')
maria.greeting()
  1. 모듈과 시작점
  • 단위 실행 (main)
  • name 을 사용하면 해당 파일의 이름이 나온다. 본 파일이 해당 파일이라면 main 이라고 나옴
  • 해당 모듈이 잘 작동하는가 혹은 시작점을 확인하기위해 해당 코드를 사용하곤한다.
if __name__ == '__main__' :
#이 코드는 보통 현재 스크립트 파일이 실행되는 상태를 파악하기 위해 사용함
  • 파이썬은 최초로 시작하는 스크립트 파일과 모듈의 차이가 없음. 어떤 스크립트 파일이든 시작점과 모듈이 될 수 있음
  • 파이썬 인터프리터가 최초로 실행된 스크립트 파일의 name 에는 'main'이 들어간다.
  1. 패키지 (Package) & Ali
  • calcpkg 파일 안에 fibo.py, calculation.py, prints.py를 만들었다.
  • 패키지에 있는 것들을 임포트 하여 사용하는 방법을 예시로 나열
#.사용 1 클래스
from calcpkg.fibo import Fibonacci

Fibonacci.fib(300) #메소드 사용

print("ex2 : ", Fibonacci.fib2(400))
print("ex2 : ", Fibonacci().title)

#. 사용 2 클래스 ()
from calcpkg.fibo import Fibonacci as fb #앨리아스 (클래스 이름 대신)

Fibonacci.fib(300) #메소드 사용

print("ex2 : ", fb.fib2(400)) #앨리아스 했기 때문에 fb로 바꿔야함
print("ex2 : ", fb().title)

#. 사용 3 (권장하진 않음)

from calcpkg.fibo import * # *은 클래스를 다 가져오는 것이라서 권장하지 않음

#. 사용 4 (함수)
import calcpkg.calculations as c

print("ex 4 : ", c.add(10,100))
print("ex 4 : ", c.mul(10,100))

#. 사용 5 (함수, 권장)
from calcpkg.calculations import div as d
print("ex 5 : ", (d(100,10)))

#. 사용 6
import calcpkg.prints as p
p.prt1()
p.prt2()
  • init.py
  • 용도 : 해당 디렉토리가 패키지임을 선언
  • 원래는 패키지를 만들 때 init.py 파일을 만들어야했다. (파이썬 2 Version)
  • 파이썬 3 버젼부터는 파일이 없어도 패키지로 인식한다.
  • 하위 호환을 위해서 생성해놓는 것을 추천

'Python' 카테고리의 다른 글

#. 타이핑 게임  (0) 2021.12.22
#.13 Error & Exceptions (예외처리)  (0) 2021.12.22
#.11 Class  (0) 2021.12.22
#.10 Object(객체)에 대하여  (0) 2021.12.22
#.9 객체지향 프로그래밍 (OOP)  (0) 2021.12.22
Comments