
파이썬에서는 기본 기능들 이외에도 프로그래밍하는데 필요한 클래스, 메소드, 상수들을 모듈로 지원하는데 이를 “표준라이브러리(Standard Library)”라고 한다. 파이썬 표준 라이브러리는 엄청나게 양이 많으니 자세한 정보는 https://docs.python.org/3/library/ 를 참고하면 됨. 오늘은 그 중에서 많이 쓰이는 math, random, datetime 라이브러리들에 대해 알아보겠다.
math이름에서 직관적으로 알 수 있듯이 수학에 관련된 라이브러리다. 삼각함수, 지수, 로지스틱 함수, 대수 관련 기능들이 많이 있다.
math.ceil(x) : x를 올림하여 정수로 리턴한다.math.fabs(x) : x의 절대값을 실수로 리턴한다.math.floor(x) : x를 내림하여 정수로 리턴한다.math.gcd(a, b) : 정수 a와 b의 최대공약수를 정수로 리턴한다.math.log(x[, base]) : base를 밑으로 하는 x의 로그를 구한다. base는 없으면 자연상수 e로 함math.log10(x) : 밑을 10으로 하는 로그를 구함math.sqrt(x) : x의 제곱근을 구함import math
math.ceil(12.5) # 13
math.floor(1.3) # 1
math.fabs(-151) # 151.0
math.gcd(120, 42) # 6
math.log(8, 2) # 3.0
math.log10(100) # 2.0
math.sqrt(122) # 11.045361017187261
datetime날짜와 시간을 다루는 라이브러리이다.
date : 날짜에 관련된 클래스date(year, month, day)로 선언 가능date.today() : 오늘 날짜 나옴date() -/+ date()하면 timedelta()타입의 값 나옴date.year : 해당 객체의 년도 출력, 1~9999date.month : 해당 객체의 월 출력, range(1, 12)date.day : 해당 객체의 일 출력, 1~해당 월의 말일from datetime import date as d
a = d.today() # datetime.date(2019, 11, 6)
b = d(2019, 10, 16) # datetime.date(2019, 10, 16)
a.year # 2019
a.month # 11
a.day # 6
a - b # datetime.timedelta(days=21)
time : 시간에 관련된 클래스time(hour, min, sec, milsec)로 선언 가능 빈 값은 0으로 초기화time.hour : 해당 객체의 시간 출력, range(24)time.minute : 해당 객체의 분 출력, range(60)time.second : 해당 객체의 초 출력, range(60)time.microsecond : 해당 객체의 밀리초 출력, range(1000000)from datetime import time as t
a = t(19, 23, 13) # datetime.time(19, 23, 13)
b = t(11, 10, 16) # datetime.time(11, 10, 16)
a.hour # 19
a.minute # 23
a.second # 13
a.microsecond # 0
a > b # True
datetime : 날짜와 시간에 관련된 클래스datetime.today() : 현재 날짜, 시간이 나옴 (datetime.now()와 같은 결과)datetime.weekday() : 요일 정보를 숫자로 출력함 (일: 0, 월: 1, 화: 2, 수: 3, 목: 4, 금: 5, 토: 6)from datetime import datetime as dt
a = dt.today() # datetime.datetime(2019, 11, 6, 19, 25, 12, 634)
b = dt(2019, 10, 16, 14, 11, 59) # datetime.datetime(2019, 10, 16, 14, 11, 59, 0)
a.year # 2019
a.month # 11
a.day # 6
a.hour # 19
a.minute # 25
a.second # 12
a.microsecond # 634
a - b # datetime.timedelta(seconds=18914, microseconds=748890)
b > a # True
timedelta : date, time, datetime의 차이 값을 나타내는 클래스+, - 연산으로 시간이나 날짜의 차이 값으 구함timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 으로 초기화 가능from datetime import date as d
from datetime import datetime as dt
from datetime import timedelta as td
a = dt.today() # datetime.datetime(2019, 11, 6, 19, 25, 12, 634)
a - b # datetime.timedelta(seconds=18914, microseconds=748890)
d.today() + td(days=10) # datetime.date(2019, 11, 16)
randomrandom은 난수 생성을 위한 도구를 제공한다.
random.smaple(candidates, pop) : sequence나 set타입인 후보(candidates)들 중에서 pop(int) 개수만큼 중복 없이 추출한다. candidates의 크기가 pop보다 작다면 ValueError를 일으킨다. candidates는 중복 값이 있는 것도 허용한다.random.choice(iter) : 이터레이터인 iter중에서 하나를 랜덤하게 리턴한다random.randrange(n) : range(n)에서 하나의 수를 뽑는다.import random
radnom.choice(['alpha', 'bravo', 'charlie'])
# 'bravo'
random.sample(range(100), 10) # [16, 54, 42, 71, 8, 1, 29, 7, 70, 62]
random.randrange(11) # 8