기록하는삶
[파이썬/python] 모듈(Module)의 정의, 모듈 만들어보기, 내장모듈(datetime, random 등) 본문
[파이썬/python] 모듈(Module)의 정의, 모듈 만들어보기, 내장모듈(datetime, random 등)
mingchin 2021. 9. 22. 00:53모듈(Module)이란?
> 코드가 저장된 파일
> 파일을 가지고 있거나, 파일이 포함된 패키지(여러 모듈을 폴더 형식으로 모아놓은 것을 패키지라 부른다)를 가지고 있는 경우, 다른 코드에서도 해당 파일에 포함된 변수, 함수, 클래스 등을 불러와 사용할 수 있다.
> 모듈 이름은 확장자(.py)를 제외한 파일 이름으로 불러온다.
> 장점
① 코드 작성 및 관리가 용이함
② 코드의 재사용이 가능하고 편리함
③ 공동 작업이 편함
모듈(Module) 만들고 활용해보기
아주 허접하지만 간단한, 함수 네 개를 만들어보았다. 첫 함수는 모듈을 소개하는 말을 출력하고, version이라는 변수를 생성 날짜로 지정했다. 이어지는 세 함수는 각각 자연수와 자연수의 제곱, 세제곱의 합을 구하는 함수다.
해당 파일을 'Sigma'라는 이름으로 저장했다. 이때 File → Download as → Python(.py)의 형태로 다운 받아 주피터노트북을 사용할 디렉토리에 넣어야함에 유의하자.
이제 새로운 파일(코드)에서 생성한 모듈을 사용할 준비가 되었다. 모듈 혹은 패키지를 사용하는 방법은 크게 두 가지이다.
1) 모듈의 일부만 불러오기 (from 모듈명 import 함수/변수/클래스 as 별명)
이렇게 특정 함수만 받아오는 경우에는, 해당 함수를 마치 지금 띄워놓은 파일에서 정의한 것처럼 바로 사용할 수 있다. 다만 그 함수만 받아오기 떄문에, 같은 파일에 정의한 다른 변수나 함수는 따로 불러오지 않으면 실행되지 않는다. 'as 별명'은 위처럼 생략해도 되고, 또는
이렇게 축약해 사용도 가능하다. 모듈 또는 패키지가 매우 큰데 다 필요한게 아니라 일부만 필요한 경우에 사용하면 좋다.
2) 모듈 전체 불러오기(import 모듈명 as 별명)
모듈 전체를 불러오는 경우, 해당 파일이 포함하고 있는 모든 변수와 클래스, 함수 등을 가져다 사용할 수 있다. 이때는 각 모듈 내에서 변수, 함수를 사용한다는 표시로 앞에 모듈명을 붙여주어야 한다. 당연히 별명을 활용하면 보다 간편하게 사용이 가능하다.
아나콘다가 제공하는 기본 모듈, random/datetime/calender
아나콘다를 설치하면 기본적으로 자주 사용하는 모듈 혹은 패키지들을 따로 설치하지 않아도 자동으로 함께 깔린다. 그 중 유용한 몇 가지를 정리해보자.
1) 난수 발생 모듈 random
불러오기: import random
① random.random(): 0 이상 1 미만의 임의의 실수 반환
난수이기 때문에, 당연히 실행할 때마다 숫자가 바뀐다. round( 실수, n)를 통해 소수 n째자리까지만 확인할 수 있다.
② random.randint(a,b): a 이상 b 이하 범위의 임의의 정수 반환
특정 범위에서 임의의 정수 하나를 반환한다. 이때는 양 끝 정수가 모두 포함된 범위이므로, 결과로 나올 수 있다.
③ random.randrange(a, b, step): a 이상 b 미만의 범위에서 step 간격으로 임의의 정수를 반환
range() 함수에서의 속성과 유사하게 a가 생략되면 default 값은 a==0이고, c가 생략되면 default 값은 c==1이다. 역시 range() 함수와 마찬가지로 b는 범위에서 제외되며, step을 줄 경우 첫 정수부터 step 간격으로 있는 정수들 중 하나를 반환한다. 예시에서 시작이 10이고 step이 3이므로, 3으로 나누었을 때 나머지가 1인 숫자들만 반환되는 것을 볼 수 있다.
④ random.sample(모집단, 표본의 크기_k): 시퀀스로 된 모집단에서 중복되지 않는 k개(표본의 크기)의 인자를 반환
n개의 시퀀스 혹은 set에서 k개의 인자를 반환한다. 리스트, 셋, 튜플, range() 등이 모집단으로 들어갈 수 있고, 결과는 리스트로 나오며 순서의 영향을 받는다.
2) 날짜 및 시간 datetime
불러오기: import datetime
date 클래스: 날짜 표현
time 클래스: 시간 표현
datetime 클래스: 날짜 + 시간 표현
다음과 같이 날짜, 혹은 시간을 직접 변수로 설정하거나
datetime(dt).date.today()를 이용해 코드 입력 당시의 날짜를 알 수도 있다. 또한 날짜 끼리의 차를 구하면 해당 날짜들 사이의 기간도 알 수 있다.
위처럼 datetime(dt).datetime.now()를 이용 현재 시각을 알 수도 있고, 아래와 같은 방법을 통해 다양하게 표현해볼 수 있다. 하이라이트 친 박스에서는 중괄호{} 안에 저 정보들을 넣어야 한다는 점, 중괄호 시작할 때 :표시, 대소문자 구분 등에 유의해야 한다.
아래쪽의 datetime(dt).datetime.now().strftime()을 이용하면, 날짜 정보를 str type으로 변환할 수 있다. 우리는 now를 잘 정의했으므로 now.strftime()이라 입력해도 같은 기능을 한다.
3) 달력 calendar
불러오기: import calandar
calendar.calendar(연도): 달력 생성이 가능
calendar.calendar(연도, m=4)로 한 줄에 4개가 나오게 할 수 있다. 입력하지 않으면 default 값은 m=3이다.
calendar.monthrange(연도, 달): 지정한 연도의 달이 어떤 요일로 시작하고, 며칠인지를 반환함.
( 0 = 월요일, 1 = 화요일, 2 = 수요일, 3 = 목요일, 4 = 금요일, 5 = 토요일, 6 = 일요일 )
즉, 2020년 2월은 토요일로 시작하고, 29일로 구성돼있다.
calendar.month(연도, 달): 지정한 연도의 달의 달력을 str type으로 반환
calendar.firstweekday(): 현재 달력의 시작 요일이 무슨 요일인지 확인 할 수 있다. default값은 0(월요일)이다.
calendar.setfirstweekday(calendar.요일): 달력의 시작 요일을 변경한다. 요일은 대문자로 입력해야한다. 변경했더니 아래와 같이 달력이 구성되고, calendar.firstweekday()를 통해 확인하면 시작 요일이 일요일(6)으로 바뀌어 있다.
calendar.weekday(연도, 월, 일): 해당 날짜의 요일을 알려준다. 2050년 내 생일은 화요일이구나.
calendar.isleap(연도): 해당 연도가 윤년인지 여부를 알려준다. 윤년이면 TRUE 아니면 FALSE.
'AI > 파이썬(Python)' 카테고리의 다른 글
[파이썬/python] 힙(Heap), Heapq 모듈 (0) | 2021.10.07 |
---|---|
[파이썬/python] 리스트(List), 리스트 복사, 리스트 메서드 (0) | 2021.09.22 |
[파이썬/python] 머신러닝 데이터 분할(예비법, 교차검증) (0) | 2021.09.22 |
[파이썬/python] 데이터분할(붓스트랩), 앙상블, Voting, 배깅(Bagging), 부스팅(Boosting) (2) | 2021.09.22 |
[파이썬/python] seaborn 그래프 기본 설정(한글깨짐 해결, 축 눈금 기울이기, 그래프 여러 개 한 번에 그리기) (0) | 2021.09.22 |