1. datetime 모듈
현재시간 확인하기
import datetime as dt
now = dt.datetime.now()
현재로부터 몇시간 전 확인하기(timedelta 활용)
import datetime as dt
now = dt.datetime.now()
delta = dt.timedelta(hours=3)
diff = now - delta
- timedelta의 옵션으로 사용할 수 있는 값은 days, hours, seconds, weeks
- months, years는 사용할 수 없음
현재로부터 몇달, 몇년 전 확인하기(relativedelta 활용)
- relativedelta의 옵션으로 사용할 수 있는 값은 months, years
from dateutil.relativedelta import relativedelta
import datetime as dt
now = dt.datetime.now()
delta = relativedelta(months=3)
diff = now - delta
now = datetime.now()
time = now.strftime('%H:%M:%S')
str = '2020-05-04'
time = datetime.strptime(str,'%Y-%m-%d')
2. zfill() 메소드
num.zfill(3)
# 반드시 3자리수여야하고 값이 없다면 zero(0)으로 채워준다.
3. 클래스, 객체, 인스턴스의 차이
클래스 : 객체를 만들어내기 위한 설계도 혹은 틀. 연관되어있는 변수와 메소드의 집합 --> 붕어빵 레시피, 틀
객체 : 구현할 대상. 클래스대로 생성된 실체. '클래스의 인스턴스'라고 불린다. --> 붕어빵
인스턴스 : 구현된 실체. 실체화된 객체로 메모리에 할당된다. 객체에 포함된다. --> 밀가루, 팥 등등
관계를 나타낼때도 사용한다. 예) 객체간의 링크는 클래스 간의 연관관계의 인스턴스
4. 클래스 method overriding, super 함수
override 는 '무시하다, ~보다 더 우선시되다' 라는 의미로
간단히 말하자면, overridding된 메소드가 가장 우선시되어진다는 뜻이다.
메소드 오버라이딩(method overriding)이란?
부모클래스에서 상속받은 특정 메소드를 자식클래스에서 재정의하는 작업이다.
재정의 후에는 부모클래스에서 정의한 메소드의 기능을 자식클래스에서 재활용 불가하다.
class 부모:
def 호출(self):
print("부모호출")
class 자식(부모):
def 호출(self):
print("자식호출")
나 = 자식()
# '호출'이라는 메소드가 자식클래스에서 오버라이딩
# 오버라이딩된 메소드가 최우선시되고 부모클래스의 '호출'메소드는 무시된다.
# 결과 : 자식호출
super 함수란?
super 함수는 super().[메서드 이름] 과 같이 사용하며,
부모클래스 내의 메소드 중 필요한 부분만 자식클래스에서 재정의하여 사용할 수 있도록 도와준다.
super 함수를 사용하면 오버라이딩하더라도 부모클래스 메소드를 사용할 수 있다.
class 부모:
def __init__(self):
print("부모생성")
class 자식(부모):
def __init__(self):
print("자식생성")
super().__init__()
나 = 자식()
# 생성자 메소드가 자식클래스에서 오버라이딩
# 재정의 후 super 함수로 부모의 생성자메소드를 호출한다.
# 결과
# 자식생성
# 부모생성
5. 클래스 변수에 접근할 때, 클래스 메소드 사용
@classmethod
def get_account_num(cls):
print(cls.account_count)
- 파라미터인 cls는 클래스명과 같음으로 클래스 변수에 접근 할 수 있다.
6. f-string 으로 금액에 ,(콤마) 표기하기
print(f'잔고:{self.credit:,}원')
7. 파일열고 쓰기
f = open("안녕.txt", mode="rt", encoding="utf-8")
lines = f.readlines() # 라인별로 읽어서 리스트화
f.close()
f = open("안녕.txt", mode="wt", encoding="utf-8")
f.write("입력할 내용")
# \n 붙여주지 않으면 한줄로 입력됨
f.close()
- mode : r(읽기), w(쓰기), a(덧붙이기), x(파일생성-존재하면 에러반환), t(텍스트파일), b(바이너리파일)
- 모드의 디폴트 값은 텍스트파일
f = open("안녕.csv", mode="wt", encoding="cp949", newline='')
writer = csv.writer(f)
writer.writerow(["1", "2", "3"])
f.close()
- csv 파일은 행단위로 입력할 수 있다.
- csv 파일은 write 할때 기본적으로 한 행을 건너뛰는데 newline='' 을 설정하면
건너뛰기 없이 입력할 수 있음
- 파일 다루기에 대한 자세한 내용 참고 사이트
https://reakwon.tistory.com/174
[파이썬] 파일 다루기 - 파일 열기(open), 읽기(read), 쓰기(write), 삭제(remove)
파이썬 파일 다루기(File Handling) 모든 언어에서 파일을 다루는 것은 매우 중요한 일이고 필수적으로 알아두어야합니다. 프로그래밍에서 파일을 읽고 분석하는 작업, 그리고 결과를 기록하여 보
reakwon.tistory.com
8. 예외 발생 시 에러 메시지를 변수로 바인딩하는 법
data = [1, 2, 3]
for i in range(5):
try:
print(data[i])
except IndexError as e:
print(e)
- IndexError 를 e로 사용하기로 정하고 예외처리를 하게되면
- 'list out of index' 라는 에러메세지가 print 된다.
파이썬 예외처리의 구조
try:
실행 코드
except:
예외가 발생했을 때 수행할 코드
else:
예외가 발생하지 않았을 때 수행할 코드
finally:
예외 발생 여부와 상관없이 항상 수행할 코드
여기까지 python 300제 문제풀이가 모두 끝났다.
Next)
Python의 클래스와 객체지향에 대해 깊게 들어가보고자 한다.
'개발노트 > python study' 카테고리의 다른 글
[스꿈스터디] Python - 할당, 얕은복사, 깊은복사 (0) | 2022.05.23 |
---|---|
[스꿈스터디] Django와 Java의 간략 비교, 캐시(cache)는 언제 사용할까? (0) | 2022.05.14 |
[Python 300제] print함수, 바인딩, immutable, join (0) | 2022.05.04 |