[Python 기초] 파이썬 프로그래밍 - 외장함수

업데이트:

개요

jpg

앞서 배운 파이썬에 기본으로 내장된 내장 함수외에도, 전 세계 파이썬 사용자들이 만든 유용한 프로그램들을 모아 놓은 파이썬 라이브러리라는 것이 있다. 이를 다운받아 다양한 외장함수들을 사용할 수 있다.

내장 함수보다 더 많은 외장 함수들이 존재하지만, 여기서는 데이터 분석에서 사용될 법하고 간단한 부분만 다뤄보고 넘어가자.


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

도서 [점프 투 파이썬] 를 공부하며 작성하였습니다.

댓글남기기