[Python] Python 기초 강의 + 개인 기초 공부 노트 정리
2019년쯤에 들었던 파이썬 입문 강의 + 개인 공부에서 나온 파이썬 기초 필기이다.
강의는 아래 프로그래머스 무료 강의를 들었다.
강의 자체는 파이썬 입문으로 아주 추천한다.
https://school.programmers.co.kr/learn/courses/2
무료 | 파이썬 입문
## 파이썬 입문 강의는, ### 🧑🏻💻👩🏻💻 초보자도 쉽게 시작할 수 있어요. 파이썬이 무엇인지 하나도 몰라도 괜찮아요. 초보자의 눈높이에 맞춰 파이썬 설치부터 함께 하며 누구나 알
school.programmers.co.kr
+)워낙 기초 내용이고 무료 강의이기에 강의 노트를 업로드했는데 혹시 나중에 문제가 생기면 지울 것이다.
+)개인 공부로 내용이 추가되면 업데이트 할 예정이다.
+)당연히 틀린 내용이 있을 수 있다. 내가 이해한 방식으로 작성해서 다른 사람은 뭔소린가 싶을 수도 있다.
●=프로그래머스 강의에 있는 것
■=내가 찾은 것
●행 번호 쪽에 -로 묶여 있는게 함수로 묶여있는 것/ 스페이스, tab에 따라 묶임
●ctrl c 하면 프로그램 강제종료
●python내장 함수,모듈은 기능이 많으니 google에서 검색을 많이하자
●type(변수이름) - 변수의 자료형을 보여줌 (list, dict, tuple, str)
●isinstance(<변수명>,자료형) - 해당 변수가 해당 자료형이 맞으면 True
●변수를 아무값도 넣지 않고 정의할 때 - <변수이름>=None 사용
●bool( ) - ( )값을 불대수식으로 판별해서 True/False return / 無는 0 有는 1 (모든 것에 대해)
└빈 list=0 / 0=0/ 46516=1/ ' '=0
---------블럭-----------
●블럭를 만들때는 헤더: 밑에 tab으로 띄어써 묶어준다.
●블럭은 같은 들여쓰기 기준으로 묶인다./하지만 한번 닫힌 블럭은 상관없다.
---------------------if--------------
●조건에 1은 True, 0은 False로 한다 (대소문자 주의)
●else : - 위의 if가 아니면 항상실행
●elif : - 위의 if가 아니고 다른 if 면 실행
●in이 아닌 경우 - not in 사용 / ex: selected not in ['A', 'B', 'C']
└ in의 경우 모든 리스트에서 선형 탐색을 진행 > 효율이 좋지 않음 O(n)
---------연산자-----------
●< > >= <= == !=(not equal)
=은 대입
●** - 제곱(승)
●/ // %
나눗셈 몫만 나머지만
●증감연산자 ++, --는 없다 >> +=1, -=1 은 가능
●and - 1개만 False여도 False / and앞이 False면 뒤의 것은 실행하지 않고 바로 False 출력
or - 1개만 True여도 True / or앞이 True면 뒤의 것은 실행하지 않고 바로 True 출력 -------('단락평가')
bool대수와 input을 사용한 입력 감지
│
└ input('입력해주세요 > ') or '아무것도 입력되지 않았어' - 입력시 : 앞이 True = 뒷부분은 무시
앞이 False = 뒷부분 실행( 1 )
----------함수----------
●정의 - def <함수이름>() :
●헤더의 ()안에 변수를 넣으면 매개변수로 정의된다. / function(a,b,c): 입력 3개의 함수
●매개변수는 해당 함수 내에서만 사용가능
●매개변수 ()안에 변수가 아닌 숫자를 넣어도 가능
●return 변수 - 해당 함수의 결과값으로 값을 출력
●여러 값을 반환할때는 return a,b,c ...... 로 하면 된다.
●return은 실행 즉시 해당 함수 블럭을 탈출함 = 그 뒤쪽 코드는 실행X
----------가변인자 함수(args, kwargs)-----------
■함수의 매개변수로 몇개를, 어떤 type을 받을 지 정하지 않고 쓰는 방법
└*<변수이름> = ~ : args, 일반인자
└type은 tuple
└+)함수의 매개변수로 쓰는 것과 packing/unpacking에 쓰는 건 조금 다름 = packing관련에선 list로 나옴
└**<변수이름> = ~ : kwargs, 키가 있는 인자, 키 = 값
└키에 따옴표 ' '하면 오류남, 값은 상관X
└type은 dict
└함수 헤더에 넣을 때 가변인자를 가장 뒤에 써야 오류가 안남
└순서: 일반 > 가변 > 키워드가변
└가변인자 인수는 튜플의 type을 가짐
------------format(포맷팅)----------
●{ }를 값으로 대체한다
●바로앞의 argument에 대해서만 가능 / { }가 있는 덩어리와 format덩어리 사이에 ,(콤마) 사용 불가
●기본 틀.format(a,b,c...) - 기본틀 안의 { }가 a,b,c....순으로 대체된다
●format값들이 { }보다 많거나 같으면 오류X, 적으면 index오류
●튜플의 값을 format에 쓸 때 .format(*<tuple이름>)을 하면 앞의 { }에 tuple이 낮은 번호부터 들어간다
■포맷팅으로 구글링해서 설명하는 블로그 보기
└%를 사용하는 것보다 .format을 사용하는게 더 pythonetic 하다 함
-------------문자열-------------
●' "둘다 기능상의 차이는 없다/한줄에 대해서만 가능하다
●''' '''로 하면 여러줄의 긴글도 처리 가능하다
'a b '''a b
c' -오류 c ''' -성공
------------정수와 실수----------------
●나눗셈 제외 정수만 다루면 결과값은 정수, 실수가 하나라도 있으면 결과값 실수
●int ( ) - 해당 숫자를 정수로 5.0 >> 5
●float ( ) - 해당 숫자를 실수로 5 >> 5.0
■map(자료형,<대상>) - <대상>의 값들을 해당 자료형으로 변환/<대상>은 2개 이상의 값을 출력해야 함
└input( ).split( )과 같이 쓰는 것 추천
■map(함수,순환가능데이터-ex:list, tuple, dic) - 순환가능데이터의 값들을 함수에 한번씩 넣어서 출력
└출력이 map자료형-> 단독출력 불가능 - list(map~)같이 출력 형태를 변환해야 출력 가능함
└함수를 직접 선언한거나 lambda를 주로 씀
└함수 부분에는 이름만, ( )넣으면 안된다
└filter와 헷갈리지마
└ex) def add_one(num):
return num+1
list1=map(add_one, [1,2,3,4,5,6,7])
=
list2=list(map(lambda x:x+1, [1,2,3,4,5]))
■sum(순환가능데이터, 시작값) - 순환가능데이터의 모든 값들을 더해서 +시작값 후 출력함
└각 데이터는 int형이야 함
└시작값 부분이 없으면 +0
■max/min(순환가능데이터) - 순환가능데이터에서 가장 큰/작은 값을 출력
■ord( ) - 해당 문자를(str) 아스키코드 int로
■chr( ) - 해당 정수(int)를 문자로(str)
------------input---------------------
●input()은 실행된 시점에서 사용자의 키보드 입력을 기다린다
●( )안에 print 내용을 넣을 수 있다./ 입력과 같은 줄 출력
└input('숫자를 입력해 주세요') /단 ,(콤마) 사용 불가(안에 format을 넣고 여러 요소를 만드는 것 불가)
●input으로 입력된 것은 문자열로 취급, 숫자만 받아도 문자열로 받는다.
●input( ).split( ) - split( )안의 것을 기준으로 여러개 입력을 받음/변수는 ,로 여러개 지정
------------list--------------
●c의 array(배열)과 같음
●<list이름>=[a,b,c......] 로 정의 가능 / index(번호)는 0부터 시작
●<list이름>[숫자] - 해당 list의 n-1 index 선택/ 숫자에 -(마이너스)를 붙이면 '뒤에서' 뜻 -1 = 뒤에서 첫번째
●<list이름>[A:B] - A이상 B미만의 index 통째로 가져옴(list형태로 가져옴) / A나 B를 비우면 처음 or 끝 ★이상미만
(slice) └A>B면 거꾸로의 순서로 가져옴
└[A:B:C] - A이상 B미만에서 C칸마다 불러옴 / 2면 하나 건너, 3이면 두 개 건너 (step이라 함)
(str에 대해서도 가능) └A>B에선 C에 -를 붙여야함
└slice로 불러오는 list는 원본이 아닌 복사본이다.(원본에 영향X)
└slice를 이용해서 list의 많은 값을 쉽게 바꾸거나 지울 수 있음
ex) [0,1,2,3] list[1:3] = [9,99] > [0,9,99,3]
list[1:3] = [9,99,999] > [0,9,99,999,3] (더 큰 ㄱㄴ)
list[1:3] = [9] > [0,9,3] (더 작은 ㄱㄴ)
●<list명>=list(range(N)) - 0~N까지의 element들을 가지는 list
●<list이름>.append( ) - 리스트 맨 마지막에 ( )를 추가 / list이름+[ ] - 리스트 맨 마지막에 [ ]를 추가
기존의 리스트를 변경 리스트를 더함
└append를 사용하지 않고 그냥 마지막 번호+1에 값을 넣으면 에러가 난다
●<list이름>.extend( ) - list에 ( )안의 list(list이름이나 [ ]로 list정의)를 뒤에 더함
●<list이름>.insert(index, value) - list의 index에 value를 넣음, 그 이후는 한칸씩 밀림
/ list크기를 넘어가는 index는 전부 list 맨끝으로 지정
●<n> in <list이름> - list에 n값이 들어있나 확인(True/False 출력)
●del (<list이름>[ ]) - 리스트의 [ ]번째 값을 지워라 (숫자들이 빈칸으로 땡겨짐) / del.list 아니다 ★
●<list이름>.remove( ) - list의 ( )값을 찾아 지움 (숫자들이 빈칸으로 떙겨짐)/같은 값은 앞의 값이 우선 지워짐
●<list이름>.pop( ) - ( )번째의 값을 지우고 그 값을 return함 /
●<list이름>.clear() - list안의 내용을 전부 지움
●len(<list이름>) - 해당 list의 elements 갯수 = 길이
●<list이름>.index( ) - ( )이 list내 어느 index에 있는지 출력, list에 없으면 에러발생
■└.index는 오직 1개, 가장 앞의 index만 출력
└모든 index를 출력하려면 filter와 lambda로 index의 list를 출력해야함
└ex) lis=[1,0,1]
list(filter(lambda x : lis[x]==1, range(len(lis)))
--> 1의 index가 [0,2]로 출력
■lambda <매개변수>:함수 - 임시함수로 그 줄에서만 생존하는 함수를 만들 때 사용
└함수 부분에 단순식(ex: x+1), 조건식(x%2==0) 둘 다 가능하다
└lambda x : x%2==0 > x에 대해 짝수 일때만 x를 출력
└filter와 사용-filter(lambda문, 데이터범위) > 데이터 범위의 값을 lambda의 매개변수에 전부 넣어 실행
└filter는 출력 type이 filter이므로 list( )등으로 변환해줘야 함
●<list이름>.sort() - list의 값을 순서대로 재배열(오름차순) / 같은 자료형(int, list, str 등)끼리만 가능
●<list이름>.reverse() - list의 값을 순서대로 재배열(내림차순)/ 같은 자료형(int, list, str 등)끼리만 가능
└.reverse와 sort는 값을 반환하는 게 아닌 그 list 자체를 바꾸는 명령이다
└~~=<list이름>.reverse( ) 식으로 사용 불가
------------list comprehension--------------
●어떤 조건의 list를 빠르고 간단하게 만드는 방법
●for문이 들어간 list - <list명>=[ <list에 들어갈 것/식> for문]
└ex) list1=[ i*i for i in range(5)] → [0,1,4,9,16]
●for문과 조건문이 들어간 list - <list명>=[ <list에 들어갈 것/식> for문 조건문]
└ex) list2=[i*i for i in range(5) if i%2==0] → [0,4,16]
●for문 중첩 - <list명>=[ <list에 들어갈 것/식> for문1 for문2]
└ex) list3=[ (x,y) for x in range(3) for y in range(3) ] → [(0,0) (0,1) (0,2) (1,0) (1,2) ~~]
--------set(집합)------------
■set은 집합을 나타내는 '자료형이다' / list와 유사하나 중복되는 값은 존재X
■<set명>=set(<list명> or [list선언])으로 생성 / type은 set으로 생성
└이 때 중복되는 값은 없어진 채로 생성
└생성될 때 오름차순으로 일단 정렬(생성 후에는 index없음)
└set의 값들은 순서, 즉 index가 없이 그냥 바구니에 들어있다고 생각
■함수 외에도 <set명> = { }로 선언 가능 (dict과 같은 괄호)
■<set1> & <set2> - set1,2의 교집합을 출력 / <set1>.intersection(<set2>)도 가능
■<set1> | <set2> - set1,2의 합집합을 출력 / <set1>.union(<set2>)도 가능
■<set1> - <set2> - set1,2의 차집합을 출력 / <set1>.difference(<set2>)도 가능
■<set명>.add( ) : set에 ( )값을 추가 / 중복 값은 그냥 무시(오류는 안남)
■<set명>.update(<list명 or [list선언]) - set에 여러값을 추가 / 중복 값은 그냥 무시(오류 안남)
■<set명>.remove( ) : set에 ( )값을 삭제 / 없으면 오류남
■<set명>.discard( ) : set에 ( )값을 삭제 / 없으면 무시(오류 안남)
■<set명>.pop( ) : list pop과 똑같이 동작
└clear, in, len 도 list와 동일
■list(<set명>) - set을 list로 변경 / 순서는 랜덤?
■tuple(<set명>) - set을 tuple로 변경 / 순서는 랜덤?
--------str(문자열)------------
●<str이름> = ' '로 정의 / list와 str은 유사점이 아주 많다
└ in으로 포함 확인, [ ]로 index의 값 확인 , [A:B:C]로 여러값 가져오기, .index( )로 ( )값의 index 확인 가능
●list(<문자열 or str이름>) - 문자열의 문자들을 각각 list의 한 index에 순서대로 넣음/ <list이름> = 방식으로 사용
●<str이름>.split( ) - 문자열을 띄어쓰기별로 나누어 list화 함 / ( )에 문자가 있으면 그 문자 기준으로 나눔
└ex) '17:05:36'.split(':') > '17', '05', '36'
└input으로 1,2,3,4를 list로 split하면 각 요소는 str임
└그냥 구분없이 쭉 붙어 있는 문자열은 그냥 list( )하면 list화 된다
●' '.join(<list이름>) - ' '사이의 문자를 경계로 list를 str로 변환 / 공백가능
└ex) ':'.join(['17', '05', '36']) > 17:05:36
└list의 요소가 int형이면 안된다 > str로 변환해야함
■len(<str이름>) - 해당 str의 길이
■<str명>.upper( ) - str의 알파벳을 모두 대문자로 바꿈 / 알파벳이 아닌 것은 변화X
■<str명>.lower( ) - str의 알파벳을 모두 소문자로 바꿈 / 알파벳이 아닌 것은 변화X
---------------dictionary--------------
●<dic이름> = {'키1' : 값1 , '키2' : 값2, : '키3' : 값3, .........}로 정의 / list와 근본은 같은데 번호(0~N)대신 키가 있다
괄호 주의
키는 문자열, 숫자형, 튜플 / 값은 어떤 자료형이 와도 상관없음/설령 값에 list가 와도 상관없다
●<dic이름>['키'] - 키에 지정된 값을 불려옴
●<dic이름>['키']=값 으로 list의 append와 같이 맨 마지막에 추가
●<'key'> in <dic이름>.keys -dic이 'key'를 key로 갖나 확인(True/False 출력)
●<value> in <dic이름>values -dic이 'value'를 갖나 확인(True/False 출력)
●del (<dic이름>['키']) - dic의 ['키']에 있는 값을 지워라 (땡겨짐)
●<dic이름>.pop('키') - (키)에 지정된 값과 그 칸을 지우고 값을 return함
●<dict이름>.clear() - dic안의 내용을 전부 지움
●len(<dic이름>) - 해당 dic의 key 갯수
●<dic이름1>.update(dic이름2) - dic1에 dic2를 더함, key가 겹치는 것은 dic2의 것이 덮는다.
---------------dictionary comprehension--------------
●어떤 조건의 dic를 빠르고 간단하게 만드는 방법
●for문이 들어간 dic - <dic명>=[ <key에 들어갈 것/식> : <value에 들어갈 것/식> for문]
└ex) dic1=[ i : '제곱 { }'.format(i*i) for i in range(5)} → {0 : 제곱 0, 1 : 제곱 1, 2 제곱 4~~}
└list를 번호를 key로 갖는 dic으로 바꿀 때 enumerate와 함께 사용
●두 list를 각각 key와 value로 dic만들기 (zip 사용)
- <dic명> = {<key명> : <value명> for <key명>, <value명> in zip(<key list>,<value list>)}
●조건문도 list comprehension과 마찬가지로 가능할 듯!
-----------------list와 dic의 다른점 주의--------------
●pop사용시 list는 앞으로 당겨지지만 dic은 당겨지지 않고 최초 할당된 키와 값이 유지
●list는 단순 덧셈(+)이 가능하지만 dic은 불가능 >> update함수 참조
------------------tuple----------------------
●tuple은 값과 순서 바꾸기가 불가능한 list
●<tuple이름>=(a,b,c......) 로 정의 가능 / index(번호)는 0부터 시작
●<tuple이름>=tuple(list이름) - list의 값으로 이루어진 tuple을 만든다
●<tuple이름>=변수1, 변수2 - 변수1,2를 tuple로 묶는다 = packing
●변수1,변수2=tuple이름 - tuple을 변수1,2로 푼다 = unpacking
●format(*튜플이름) - tuple을 index,value로 쪼개서 2개로 보냄
●temp를 사용하지 않고 값을 바꿀 수 있음 - x,y=y,z
●함수의 return값으로 여러값을 전달할 수 있음★
●튜플 속 list의 index를 지정할때는 그냥 순서대로 [ ][ ]를 하면 된다.
----------for----------------(list vs dictionary)
●for <변수> in <list이름>: - 변수에 list의 값들을 전부 넣어가며 블럭을 반복실행/ 0번부터 순서대로
└ex for season in seasons: seasons=['봄', '여름', '가을', 겨울']
●len(<list이름>) - 해당 list의 elements 갯수
●len(문자열) - 문자열의 길이
└for에서 몇번째 반복인지 나타내기 위해 len을 쓸 수는 있지만 not Pythontic하다
●for <변수1>,<변수2> in enumerate(<list이름>): - 변수1=index, 변수2=value를 넣는다/
변수를 1개만 넣으면 1개 변수에 tuple로 (index, value)로 저장된다
●for <변수> in range(N): - 변수에 0~N-1의 값을 넣어가며 블럭을 반복실행 / N번 반복
└목록이 정해져있다면 list사용/ 횟수가 정해져있다면 range사용
└■range(시작, 끝, step) - list의 slice와 같은 개념 / 시작부터 끝까지 step만큼 뛰어서 실행/마이너스(-)도 가능
●for <변수> in <dic이름>.keys(): - 변수에 dic의 키들을 전부 넣어가며 블럭을 반복실행 / keys()는 생략해도 된다
●for <변수> in <dic이름>.values(): - 변수에 dic의 키에 저장된 값들을 전부 넣어가며 블럭을 반복실행
└동시에 불러오기는 format(key, dic이름['key']) 를 활용
●for <변수1>,<변수2> in <dic이름>.items(): - 변수1=key, 변수2=value를 넣는다/
변수를 1개만 넣으면 1개 변수에 tuple로 (key, value)로 저장된다
└list의 enumerate와 같다. / 단 enumerate는 순서대로 나오지만 items는 순서는 무작위로 나온다
-----------while------------------------
●while의 조건이 True이면 계속 반복 / False면 블럭 실행안하고 넘어감 / 반복형 if
●not in ['A', 'B', ......] 사용해 원하는 것이 나올 때까지 반복 가능
●while True : - 무한루프
●for문은 while로도, 그 반대로도, 구현 가능 >> 더 편한 경우나 좋은 경우가 다름
--------------break/continue----------------
●break - 바로 상위에 있는 반복문(while, for)을 나감
●continue - 바로 상위의 반복문(while,for)에 대해 하단 명령을 처리하지 않고 다음 반복으로 감
------------------try/except/raise------------------
●이 방법은 코드를 읽기 어렵게 만드므로 꼭 필요한 경우에만 사용 권장
●try: 안의 코드를 실행하고 오류가 발생하면 except: 를 실행
●try:안에 일반적인 코드를 작성하고 input이나 연산에 따라 오류가 발생가능한 경우를 except로 처리하면 될듯
●except 오류종류 : - ImportError IndexError ValueError ZeroDivisionError
종류多-검색해보기 모듈 에러 색인(list번호)에러 값에러 0으로 나눌때 에러
오류종류를 적지 않으면 모든 에러에 대해 exccept 처리
Exception as 변수
모든 에러처리+에러의 정보를 변수에 넣는다
●if else문으로 구현가능 - 단 importError는 if else로 구현 불가
●raise 오류종류 - 해당 오류종류를 발생시킴
●오류가 try문 안에서 발생하면 except로 가고 try문 밖에서 발생하면 프로그램을 중지시킨다
(일반적으로는 try문 안에 넣어서 사용)
-------------------클래스--------------------------------
(얘는 이해 안되면 https://www.youtube.com/watch?v=tTCFYA7xIdA 를 보자)
●class<클래스명>( ): - 클래스 선언 ★무조건 class의 블럭을 만들어 줘야함, 주석을 써서라도
└여기에 클래스를 넣으면 그 클래스를 부모 클래스로 갖는 자식 클래스를 선언한다./ ( )는 제외 (상속,inheritance)
└자식 클래스는 부모 클래스의 메소드를 가능하다.
●class의 구성원들 = 인스턴스(instance) / <instance명> = <class명>( ) - 인스턴스를 클래스로 편입
●<class명>.<동작명> = 동작 - 해당 클래스의 동작을 추가
└ex) class Human( ):
A = Human( ) '''A는 Human 클래스의 instance'''
Human.speak = '한국어' '''Human 클래스의 speak 부여'''
A.speak '''A는 Human 클래스 이므로 speak 보유'''
●클래스의 함수 만들기 (메소드,method)
class선언 블럭안에 함수를 만들면 된다./ 이후 사용은 <class or instance명>.<함수명>(~ )
/무조건 첫번째 매개변수는 안쓰더라도 self로
└자식 클래스에 부모 클래스와 같은 이름의 메소드를 만들면 부모의 메소드가 아닌 자식의 메소드가 실행된다. (단순 오버라이드)
└super( ).<메소드명)( )을 자식 메소드에 넣으면 자식의 오버라이드한 메소드 실행 후 부모의 메소드를 실행한다./ 부모의 __init__이 복잡할 때 자식 클래스의 init에서 많이 쓰임(영상 보는게 빠를 듯)
●instance 생성 method (생성자, __init__)
__init__은 instance가 만들어질 때마다 호출되는 메소드다./간단하게 instance만드는 양식 제공 메소드로 생각
-메소드 : def __init__(self, <속성명1>, <속성명2>,~~): '''___init__을 이용해 instance생성'''
self.<속성명1> = 속성1
self.<속성명2> = 속성2
~~~~~~
-사용 : <객체명>=<class명>(속성1, 속성2, ~~)
●instance 문자열화 method (__str__)
-메소드 : def __str__(self):
return(.format을 포함한 문자열)
-print(<instance명>)처럼 인스턴스 자체가 호출되면 실행되는 메소드
●Error도 일종의 class이다 -class명 에러 전체 : Exception 특정 에러 : 그 에러 이름
-(나의 Error 파일)
class <내 에러이름>(상위 에러 class):
에러 코딩~~~
-(Error가 발생할 파일)
from <나의 Error 파일> import <내 에러이름> (에러 import)
raise <내 에러이름> (에러를 발생시킬 지점)
============================모듈===============================
●미리 만들어진 코드를 가져와 쓰는 방법
●import <모듈이름>
●module 별로 구글링해서 사용방법 찾을 수 있다.
●파이썬 내장 모듈이 아닌 경우 모듈과 프로그램이 같은 폴더 내에 있어야한다.
●모듈의 함수를 쓸 때는 <모듈이름>.함수 / 모듈이름을 앞에 붙여줘야 한다.
----------math module--------------
●import math
●math.함수 - 이렇게 사용가능
--------random module----------
●import random
●random.choice(<list이름>) - list에서 무작위로 하나를 골라줌
●random.shuffle(<list이름>) - list의 순서를 무작위로 바꿈
●random.randrange(A,B) - A이상 B미만의 무작위수
=random.randint(A,B)
----------datetime module---------
●import datetime
●datetime.datetime.now( ) - datetime.datetime이라는 class로 (년, 월, 일, 시, 분, 초, 마이크로초)을 출력
●datetime.datetime(년,월,~~) - 원하는 때를 datetime.datetime class로 출력 / 미입력은 0으로 채워짐
●<instance명>.replace(year= ,month= , ~~)로 저장된 시간의 년,월 등등을 바꿀 수 있음
●<instance명>.year/month/day~~ - 해당 instance의 년/월/일 한개를 int로 출력
●datetime module은 -을 지원한다 / datetime.datetime을 -한 결과값은 datetime.timedelta class이다
/ timedelta는 (일,초,마이크로초)로 출력
└ + : datetime + timedelta
- : datetime - datetime / datetime - timedelta
●datetime.timedelta(일수,초~~) - 원하는 때를 datetime.timedelta class로 출력 / 미입력은 0으로 채워짐
●<instance명>.days/seconds~~ - 해당 instance의 일수/초~~ 한개를 int로 출력
----------time---------
■time.sleep( ) - ( )초 동안 일시정지 - c의 delay( )와 같음
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================