[Python 기초] 파이썬 프로그래밍 - 외장함수
업데이트:
개요
앞서 배운 파이썬에 기본으로 내장된 내장 함수외에도, 전 세계 파이썬 사용자들이 만든 유용한 프로그램들을 모아 놓은 파이썬 라이브러리라는 것이 있다. 이를 다운받아 다양한 외장함수들을 사용할 수 있다.
내장 함수보다 더 많은 외장 함수들이 존재하지만, 여기서는 데이터 분석에서 사용될 법하고 간단한 부분만 다뤄보고 넘어가자.
1. pickle
pickle
은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.
다음 예는 pickle
모듈의 dump
함수를 이용해서 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여준다.
import pickle
f = open("test.txt",'wb')
data = {1:'python',2:'data',3:'science'}
pickle.dump(data,f)
f.close()
다음은 pickle.dump
에 의해 저장된 파일을 pickle.load
를 이용해 원래 있던 딕셔너리 객체(data) 상태 그대로 불러오는 예이다.
f = open("test.txt",'rb')
data = pickle.load(f)
print(data)
[Output] {1: 'python', 2: 'data', 3: 'science'}
위의 예에서는 딕셔너리 객체(data)를 이용하였지만, 어떤 자료형이든 상관없다.
2. calendar
calendar
는 파이썬에서 달력을 볼 수 있게 해주는 모듈이다.
import calendar
print(calendar.calendar(2015))
[Output]
2015
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 1
5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8
12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15
19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22
26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29
30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1 2 3 4 5 6
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30
calendar.calendar(연도)
는 그 해의 전체 달력을 볼 수 있게 해준다.
calendar.prcal(연도)
도 마찬가지의 결과를 준다.
print(calendar.prmonth(2015,12))
[Output]
December 2015
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
None
calendar.prmonth(연도,월)
은 해당 연도와 해당 월의 달력만 보여준다.
print(calendar.weekday(2019,7,18))
[Output] 3
calendar.weekday(연도,월,일)
은 그 날짜에 해당하는 요일 정보를 돌려준다.
월요일부터 일요일까지 0부터 6의 값을 순서대로 반환한다.
이를 응용해서 다음과 같은 요일 코드북을 구현해보았다.
day = "월화수목금토일"
for i in range(0,6):
print(calendar.weekday(2019,7,i+8), day[i])
[Output]
0 월
1 화
2 수
3 목
4 금
5 토
calendar.monthrange(2019,7)
[Output] (0, 31)
calendar.monthrange(연도,월)
은 해당 연도의 해당 월의 1일이 무슨 요일인지와 그 달이 몇일까지 있는지를 돌려준다.
즉, 위의 결과값을 통해 2019년 7월 1일은 월요일(0)이고, 31일까지 있는 달 임을 알 수 있다.
3. random
random
은 난수(규칙이 없는 임의의 수)를 발생시키는 재미이쓴 모듈이다.
import random
random.random()
[Output] 0.11248850529026411
random.random()
는 0.0부터 1.0사이의 실수 중 난수값을 돌려준다.
random.randint(1,10)
[Output] 3
random.randit(시작, 끝)
는 시작 숫자부터 끝 숫자 사이의 정수 중 난수값을 돌려준다.
random.randint(1,100)
[Output] 68
1부터 100사이의 난수를 돌려준 것이다. 결과는 난수값이므로 반복 실행을 할때마다 당연히 다른 숫자가 반환된다.
random.choice([1,2,3,4,5,6])
[Output] 1
random.chioe
함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 돌려준다.
즉, 랜덤으로 뽑아준다(random.choice).
random
모듈을 이용해서 함수를 하나 만들어보자.
def random_pop(data):
number = random.choice(data)
data.remove(number)
return number
정의한 random_pop
함수는 입력된 리스트 객체 안의 요소를 무작위로 하나를 뽑고 그 숫자를 제거하고, 제거된 그 숫자를 반환해 준다.
data = [1,2,3,4,5]
for i in range(0,len(data)):
print("%s를 무작위로 꺼내고, 남은 숫자들은 %s입니다." % (random_pop(data), data))
[Output]
3를 무작위로 꺼내고, 남은 숫자들은 [1, 2, 4, 5]입니다.
5를 무작위로 꺼내고, 남은 숫자들은 [1, 2, 4]입니다.
4를 무작위로 꺼내고, 남은 숫자들은 [1, 2]입니다.
1를 무작위로 꺼내고, 남은 숫자들은 [2]입니다.
2를 무작위로 꺼내고, 남은 숫자들은 []입니다.
해당 함수를 for문과 print를 이용해 나타내 보았다.
data = [1,2,3,4,5]
random.shuffle(data)
data
[Output] [5, 2, 3, 4, 1]
random.shuffle
은 리스트 자료형(순서가 존재)의 요소들을 무작위로 섞어준다.
4. webbrowser
webbrowser
는 자신의 시스템에서 사용하는 기본 웹 브라우저가 자동으로 실행되게 하는 모듈이다.
import webbrowser
webbrowser.open("https://yganalyst.github.io")
[Output] True
입력값으로 넣은 URL이 열린다.
webbrowser.open_new("https://yganalyst.github.io")
[Output] True
open_new
는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리도록 한다.
Reference
도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.
댓글남기기