파이썬에는 가상의 도서관이 있다. 아주아주 큰 규모의 도서관이다. 그곳에는 파이썬을 운영할 수 있는 온갖 자료와 책들이 비치되어 있다.

 

library

 

이 도서관은 오프라인 도서관과 차이가 있다.

 

첫째, 책을 빌려가도 원본이 그대로 있다.

        -> 책이 없어 못빌려주는 일이 없다.

 

둘째, 직접 안가도 된다.

        -> 클릭 한번에 다운로드 한다. (아니면 pip 명령어 한줄)

 

셋째, 전세계에서 실시간으로 새로운 책이 계속 추가되고 있다.

        -> 최신 버전인지 써있다.

 

넷째, 책을 빌리는 것은 무료다.

        -> 무료로 빌려서 만든 프로그램을 유료로 팔수있다.

 

다섯째, 전세계에 강의를 하는 선생님들이 있다.

        -> 웹페이지, 블로그, 유튜브, 강의사이트에 유료 혹은 무료로 강의를 제공한다.

 

이 정도면 상당히 신박한 도서관이라고 할 수 있겠다. 

 

도서관은 파이썬의 라이브러리를 말한다. 프로그래밍에서 라이브러리는 원하는 정보나 솔루션을 찾을 수 있는 곳 이다. 기본 라이브러리(Standarad Library)는 파이썬을 설치할 때 같이 설치된다. 그리고 외부의 라이브러리들은 전세계에 여기저기 흩어져 있겠지만 대체로 중요한 프로젝트들은 PyPI에서 관리하고 있다.

 

https://pypi.org/

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

 

PyPI 에서 주요 프레임웤이나 라이브러리를 검색할 수 있다. 날짜를 보면 최근의 업데이트 상황을 알 수 있다. 관련 내용과 파일을 다운로드 받을 수 있고 pip 설치 명령어도 찾을 수 있다.

 

프로젝트의 업데이트 상황이 나온다

 

이 포스트는 표준 라이브러리에 대한 몇가지 예제를 실행해본다.

 

파이썬에서 라이브러리를 사용하는 이유는 사람이 도서관에 가서 공부를 하는 것과 별반 다르지 않다. 기업의 입사 시험이나 공무원 시험에 합격하기 위해서는 공부를 해야한다. 시험에 답을 잘 쓰기 위해서 우리는 그 일에 관련된 교재로 공부해야 한다. 경제학, 공학, 인문사회, 영어 등의 지식이 담겨있는 교재이다.

 

그것은 역사속의 현자들에 의하여 연구되고 검증된 학문들이다. 그 학문을 우리 스스로 만들지 않았지만 시험을 치는데 유용하게 사용할 수 있다. 심지어 취직해서 돈도 벌 수 있다. 교재값과 학원비만 부담하면 된다.

 

파이썬 라이브러리도 마찬가지다. 내가 만든 프레임워크나 시스템이 아니지만 유익하게 사용할 수 있다. 라이브러리를 사용한 프로그램을 개발해 돈을 벌 수도 있으며, 똑같이 교재값과 학원비만 부담하면 된다. 한술 더떠 심지어 무료 교재와 무료 강의를 들을 수 있다. 사용자가 부담할 것은 시간과 노력밖에 없다.

시간과 노력이 현대사회에서 가장 비싼 자원이긴 하다...


표준 라이브러리(Standard Library)

 

표준 라이브러리는 아래의 링크에 Documentation 되어 있다.

 

파이썬 표준 라이브러리

 

파이썬 표준 라이브러리 — Python 3.8.5 문서

파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합�

docs.python.org

마찬가지로 모든 라이브러리를 들여다 보는 것은 시간의 제약이 있으니 자신에게 필요한 라이브러리를 검색하는 능력이 중요하다. 파이썬 문서에서 주제에 따른 분류를 해놨으니 참고한다.

 

예를 들어 수학에 대한 모듈을 보면 몇가지 분류가 있다. number 가 있고 math 가 있고 random , statistics 가 있다. 숫자에 대한 내용일 것이고 statistics는 통계에 대한 기능일 것이다. 지금 당장 모든 라이브러리의 상세 사항에 대하여 외우지 않아도 된다.

 

내 프로젝트에 통계적 기능이 필요하다. 그러면 1차적으로 표준 라이브러리를 찾아보고, 모듈에 들어가 본다. 설명이 잘 나와있다. statistics 모듈은 실수를 이용한 수학적 통계를 제공하는 함수들이다. 하고 상세한 설명이 기재되 있다.

 

statistics.py

외부 라이브러리(third-party)인 Numpy 와 SciPy의 내용도 나온다. 표준 라이브러리는 기본적인 그래프와 과학계산용도로 제작되었으니 완전히 전문적인 패키지를 원하면 SAS 나 Matlab같은 전용 소프트웨어나, Numpy같은 라이브러리를 활용하라는 식의 의견이 써있다.

 

즉 여기서 보다 한단계 더 높은 기능을 찾는다면 그 때 외부 라이브러리를 찾아 가야한다. 위에서 설명한 PyPI로 가서 바로 numpy를 검색해본다. numpy 는 파이썬에서 대규모 데이터의 다차원 배열을 처리할 수 있는 대표적인 수학 모듈이다. 기본 라이브러리에서 해결 못하는 높은 수준의 문제를 Numpy에서 해결 할 수 있다.

 

pypi

Numpy 튜토리얼이 나온다.

 

넘파이 튜토리얼

기본 라이브러리는 많이 쓰이는 일반적인 모듈이 많기 때문에 자신에게 필요한 기능이 없을 수도 있다. 그래서 외부 라이브러리의 검색능력이 필요하다. 파이썬은 어떤 라이브러리를 사용하더라도 전 세계적으로 사용자가 많기 때문에 비슷한 질문과 답변이 이미 나와있는 경우가 많다(Stack overflow에) 그러니까 복잡하게 생각하지 않아도 된다.

 

예제 datetime 모듈

 

날짜를 사용하는 모듈의 예제이다. 

from datetime import date

today = date.today()

print(type(today))
print(today.weekday())
print(today.isoweekday())
print(today.isocalendar())
print(today.isoformat())

datetime 모듈의 date 객체

today 변수에 datetime모듈의 date 객체 참조가 저장된다.

 

첫번째 라인은 date 타입에 대한 것이고, today.weekday()는 요일 정보다. 다른 언어의 라이브러리도 월요일이 0부터 시작하는 경우가 많다. 이것을 바꾼 메소드가 isoweekday다. 사람들은 월요일이 1이라고 생각하는데 컴퓨터는 0을 처음 시작번지로 인식하기 때문에 그렇다.

 

ioscalendar는 년도, 몇번째 주, 요일로 출력된다. 2020년 8월 20일은 2020년의 34번째 주이며 오늘은 4번째 (목요일)이다는 것이다.

 

*time 모듈

시간과 관련된 모듈은 많이 있다. 양력,음력, 시간대 같이 인간이 사용하는 시간 개념이 복잡하기 때문에 컴퓨터에서는 단순하게 접근한다.

 

타임스탭프

타임스탬프란 도장처럼 쾅 찍는 것이다. 이를 epoch time 이라고 한다. 1970년1월1일 0시0분0초부터 지금까지의 경과시간을 나타내는 것이다. 즉 타임스탬프는 현재 시간을 찍으면 항상 과거보다 많아진다. 이걸 하다보면 진짜로 시간의 흐름이 느껴진다. 시간이 거꾸로 가지않는 이상 타임스탬프는 항상 앞으로만 간다.

 

import time
import datetime


def now():
    timestamp = time.time()
    print(timestamp)
    print(time.ctime(timestamp))

    lt = time.localtime(timestamp)


    now = datetime.datetime.now()
    print(now.strftime("%Y년 %m월 %d일 %M분 %S초"))

    print(lt)
    print(lt.tm_zone)
    print(lt.tm_year, "년", end= ' ',sep='')
    print(lt.tm_mon, "월", end= ' ',sep='')
    print(lt.tm_mday, "일", end= ' ',sep='')
    print(lt.tm_min, "분", end= ' ',sep='')
    print(lt.tm_sec, "초", end= ' ',sep='')

now()

 

time이나 datetime 이나 각자의 메소드로 시간을 다룰 수 있다. epoch time 으로 부터 시간을 받는 것은 어렵지 않지만 시간을 변환하는 것은 생각보다 복잡하다. 인간의 시간은 절대적이기도 상대적이기도 하다. localtime 메소드는 지역의 시간을 말한다. (OS의 지역 설정에 따라 달라진다)

 

시간을 사용한다

 

* 파이썬 시계만들기 tkinter GUI, String Format 지시자

 

tkinter GUI를 이용해 시계를 만들어 본다. 시간을 문자열로 변경해야하는데 포맷 변경이 번거롭다. 이럴 때을 위한 전용 메소드가 있다. strftime 메소드(string format time)를 사용하면 간단히 해결된다. 포맷 지시자는 아래 파이썬 문서에 나와있다. (%Y년 , %m월 등)

 

import tkinter as tk
import datetime

root = tk.Tk()
root.geometry("640x150")
root.title("Clock")

def time_tick():
    now = datetime.datetime.now().strftime("%Y년 %m월 %d일 %H시 %M분 %S초")
    # now = time.ctime(time.time())
    label.config(text=now)
    label.after(1000,time_tick)

label = tk.Label(root, font =('Hack',30,'bold'), text="text")
label.pack(pady = 20)
button1 = tk.Button(root, text="Quit", command=root.destroy).pack()

time_tick()

root.mainloop()

datetime 라이브러리를 활용한 시계 

 

 

tkinter는 아래 튜토리얼 참고

 

파이썬 GUI 프로그래밍 1 Tkinter 유래와 윈도우창 참고사이트 모음

파이썬으로 GUI 프로그래밍을 시작하기 위한 가장 빠른 방법은 Tkinter 모듈을 사용하는 것이다. Tkinter는 쉽게말해 파이썬으로 GUI 윈도우 창을 만들 수 있게 해주는 프레임웤(윈도우 만들기 도구)��

digiconfactory.tistory.com

*스트링 포맷 지지자

 

datetime — 기본 날짜와 시간 형 — Python 3.8.5 문서

datetime — 기본 날짜와 시간 형 소스 코드: Lib/datetime.py datetime 모듈은 날짜와 시간을 조작하는 클래스를 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 포매팅과 조작을 위한 �

docs.python.org

요약

 

*표준 라이브러리를 다루는 기술은 중요하다. 그것은 외부 라이브러리에 확장할 수 있는 기초가 된다. 개별적인 reference는 파이썬 공식문서 및 파이썬 관련 웹사이트나 블로거들의 튜토리얼들을 참고한다.

공유하기

facebook twitter kakaoTalk kakaostory naver band