장래 프로그래머의 블로그
2024.10.01 TIL 본문
인공지능을 위한 파이썬 4~5주차 강의 2회독
(한번 듣고 난 이후 복습하기 위해 다시 한번 빠르게 들었음)
SQL 코드카타 6~11번 문제 풀기 완료
인공지능 코드카타 6~11번 문제 풀기 완료
오늘은 너무나 생소한 단어들이 많이 나왔고 이터레이터와 제너레이터 그리고 데코레이터 세 가지도 마찬가지로 처음 들었던 내용이라서 밑에 복습할 겸 정리할 예정이다. 4~5주차 내용은 내일 파이썬 라이브러리 강의를 들으면서 다시 내용을 훑어볼 것이다.
오늘은 SQL 문제들이 이거일 줄 알았는데 알고보니 안 되는 코드들이 있어서 내일 다시 한번 막혔던 내용을 풀어볼 예정이다. 그리고 파이썬 문제들도 내가 생각한 코드가 왜 맞지 않을까 하는 코드들이 있어서 내일 다시 풀어볼 예정이다.
또한 어제부터 is not과 <>(혹은 !=)이 서로 같은 줄 알았는데 이럴 땐 안되는 코드도 있어서 한번 찾아보았다.
is not과 <>은 타입 비교 대상의 범위가 차이가 있다고 한다. <>(!=) 연산자는 원시 타입(Primitive type)에 대해서만 동작하고 null은 원시 타입이 아니기 때문에 a ! = null은 동작하지 않는다. 즉 null을 써야 할 때는 앞에 is not을 붙여야만 한다.
이터레이터(Iterator)
반복 가능한 객체의 요소를 하나씩 꺼내오는 객체다. __iter__() 메서드와 __next__() 메서드를 반드시 구현하여야 하며, 여기서 __next__() 메서드는 호출할 때마다 다음 요소를 반환하는 기능이 있다. 더 이상 꺼낼 요소가 없으면 StopIteration 예외를 발생시킨다. 함수로는 iter()와 next()가 있으며 iter는 리스트로부터 이터레이터를 생성하는 함수로, next() 함수를 사용해 이터레이터의 각 요소를 하나씩 꺼내올 수 있다.
제너레이터(Generator)
이터레이터를 생성하는 특별한 함수로, yield란 키워드를 사용하여 값을 하나씩 반환한다. 그리고 모든 값을 한꺼번에 메모리에 올리지 않고, 필요할 때마다 값을 생성하므로 메모리 효율성이 높다. 이 함수는 yield가 호출될 때마다 함수의 상태가 유지되며, 다음 호출 시 그 상태로부터 실행이 재개된다. 또한 제너레이터는 호출 시 객체를 반환하며, 그 객체는 이터레이터처럼 동작하게 된다.
데코레이터(Decorator)
함수나 메서드를 변경하지 않고, 추가적인 기능을 쉽게 추가할 수 있는 방법이다. 데코레이터는 함수를 다른 함수로 감싸서, 원래 함수에 새로운 기능을 덧붙일 때 사용된다. 데코레이터를 적용시키려면 데코레이터를 적용하려는 함수 위에 @데코레이터이름을 붙여 사용합니다.
데코레이터의 장점이라면 첫 번째, 코드 재사용성이 있다. 즉, 동일한 기능을 여러 함수에 적용할 수 있다는 점이다. 두 번째는 코드 가독성 향상인데, 코드 구조가 깔끔해지고, 함수의 핵심 로직에만 집중할 수가 있다. 그리고 마지막으로 중복 코드를 제거함으로써, 간결하게 유지할 수 있다.
'Today I Learned' 카테고리의 다른 글
2024.10.03 TIL (2) | 2024.10.03 |
---|---|
2024.10.02 TIL (10) | 2024.10.02 |
2024.09.30 (2) | 2024.09.30 |
2024.09.29 (2) | 2024.09.29 |
2024.09.28 (4) | 2024.09.28 |