점점 글이 짧아진다. 그만큼 시간이 좀 부족한 것 같기는 하다. 아직 초보니깐 그렇겠지. 어제 처음으로 문제를 풀면서 '좀 재밌네?'라는 생각이 들었다. 오늘은 문제를 많이 못 풀 것 같은데, 내일은 야무지게 풀어재껴야지.
중급 3
site-packages
(1) site-packages에 있는 모듈은 어디서나 사용할 수 있다.
(2) 디렉토리 - 파이썬파일로 만든 모듈을 디렉토리채로 venv - lib - site-packages로 옮기면 다른 디렉토리에서도 만든 모듈을 사용할 수 있다.
sys 모듈
(1) 시스템의 간략한 정보를 담고 있다.
(2) sys.path는 모듈들이 들어있는 경로를 나열해주는 값들을 가지고 있다.
venv
(1) 독립적인 가상환경 설정을 구현하는 디렉토리다.
중급 4
math 모듈
(1) 절대값
math.fabs(-10)
(2) 올림
math.ceil(5. 21)
(3) 내림
math.floor(5. 21)
(4) 버림
math.trunc(5. 21)
(5) 최대공약수
math.gcd(14, 21)
(6) 팩토리얼
math.factorial(10)
(7) 제곱근
math.sqrt(4)
random 모듈
(1) 난수
random.randint()
(2) 지정한 숫자만큼의 요소들을 랜덤으로 뽑아 리스트로 반환
random.sample()
time 모듈
(1) 현재 시간
it = time.localtime()
(2) time.localtime()에서 원하는 것만
it.tm_year(mon·mday·wday·hour·min·sec)
객체지향 프로그래밍
(1) 객체를 이용한 프로그램이다.
(2) 객체는 속성과 기능으로 구성된다.
객체 만들기
(1) 객체는 클래스에서 생성된다.
(2) 클래스에서 속성과 기능을 정의한다.
(3) 클래스를 하나 만들었다 하더라도 객체는 여러개를 만들 수 있다.
(4) 클래스는 붕어빵 틀이다.
객체 사용의 장점
(1) 코드 재사용, 모듈화에 좋다.
클래스 만들기
(1) class 키워드 + 속성(변수) + 기능(함수)를 이용한다.
(2) class 이름의 첫 글자는 대문자가 관례다.
객체 생성
(1) 객체는 클래스의 생성자를 호출한다.
(2) 호출 후 값을 넣어 속성을 초기화한다.
중급 5~6
얕은 복사
(1) 객체 주소만 복사하는 것이다.
깊은 복사
(1) 객체 자체를 복사하는 것이다. 또 하나의 객체가 만들어진다.
(2) copy 모듈을 사용한다.
(3) 예시
tc1 = TemCls(10, 'Hello')
tc2 = copy.copy(tc1)
id( ) 함수
(1) 할당한 메모리 주소값을 알 수 있다.
리스트의 깊은 복사
(1) for문과 append( )를 이용하면 된다.
(2) extend( )를 이용하면 된다.
(3) 리스트 내 깊은 복사를 하는 .copy( ) 함수를 이용한다.
(4) [ : ]을 이용한다.
init( )
(1) 속성을 초기화 한다.
상위 클래스의 속성 초기화
(1) 하위 클래스의 init( ) 코드 바로 밑에 상위 클래스의 init( ) 코드를 가져온다.
(2) 예시
class C_Class(P_Class):
def init(self, cNum1, cNum2):
print('[C_Class] init( ) called!!')
P_Class.init(self, cNum1, cNum2)
(3) super( ).init(cNum1, cNum2)
중급 7
예외 처리
(1) 발생한 예외에 대해 별도 처리한다.
(2) 예외가 프로그램 전체 실행에 영향이 없도록 한다.
try : ~ except :
(1) 예외가 예상되는 코드를 위 아래로 감싸 예외 처리를 한다.
예외 담당 클래스
(1) 예시
except Exception as e:
print(f'exception: {e}')
raise 키워드
(1) 예외가 예상되는 곳에 직접 예외를 발생시킬 수 있다.