파이썬에서는 기본 기능들 이외에도 프로그래밍하는데 필요한 클래스, 메소드, 상수들을 모듈로 지원하는데 이를 “표준라이브러리(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)
random
random
은 난수 생성을 위한 도구를 제공한다.
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