한 걸음씩 기록하며
#.12 Module, Package 본문
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()
- 모듈과 시작점
- 단위 실행 (main)
- name 을 사용하면 해당 파일의 이름이 나온다. 본 파일이 해당 파일이라면 main 이라고 나옴
- 해당 모듈이 잘 작동하는가 혹은 시작점을 확인하기위해 해당 코드를 사용하곤한다.
if __name__ == '__main__' :
#이 코드는 보통 현재 스크립트 파일이 실행되는 상태를 파악하기 위해 사용함
- 파이썬은 최초로 시작하는 스크립트 파일과 모듈의 차이가 없음. 어떤 스크립트 파일이든 시작점과 모듈이 될 수 있음
- 파이썬 인터프리터가 최초로 실행된 스크립트 파일의 name 에는 'main'이 들어간다.
- 패키지 (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