파이썬에도 삼항연산자가 있다. 다만 타 언어의 삼항연산자와 상당히 형식이 다르다
문법 : a if 조건문 else b
- 장점 : 말 그대로 '영어문장으로 읽을 수 있을 정도'의 가독성
- 단점 : 타 언어와 전혀 호환되지 않는 문법에 혼란
파이썬에는 try에도 else를 쓸 수 있다. try가 정상적으로 수행되면 else가 수행된다.
else문에서는 try문의 변수가 그대로 사용된다.
문법 : try : else : except : finally :
- 장점 : try에서 수행되는 내부 검사를 거치지 않아도 되어 수행속도가 빠르다
- 파이썬의 range 구문은, generator이다
- 파이썬의 enumerate 구문은, 인덱스를 쓸 수 없는 자료형(dict)에 인덱스를 만들어 준다.
기존의 클래스나 함수를 수정하지 않고 기능을 덧붙이는 클로저 -> 나중에 Spring에서 이어지는 IoC를 위한 핵심적인 요소
- 함수를 인자로 받는 closure를 만든다
- closure 내부에 wrapper 함수를 만들고, 인자로 받은 함수를 wrapper 내부에서 잘 요리한 후 wrapper를 반환한다.
- Decorator를 적용시키고 싶은 함수의 윗줄에
@클로저명을 추가한다.
실행 순서 : 함수의 바로 위에 있는 것 부터, 아래에서 위로 실행된다.
정의 : 한번에 하나 혹은 그 이상씩 값을 반환할 수 있는 객체
예시 :
- container(리스트,튜플,dict등의 자료형)
- open 함수로 불러진 파일, 소켓
- iter 혹은 getitem 메서드가 구현된 Class
정의 : 한번에 하나씩만 값을 반환하는 객체
특성 :
- 현재 어디까지 반복되었는지 정보를 포함함
- next를 통해 하나씩 반환
- 더이상 반환할 값이 없을 경우 StopIteration Exception 발생
사용법 : StopIteration 에 대한 예외처리가 필요함
용도 : 해당되는 객체를 iterator로 만들어줌 동작방식 : 해당 객체의 iter 메소드를 호출하는 듯?
용도 : 해당 iterator의 다음 값을 반환해줌 동작방식 : 해당 iterator의 __next__메소드를 호출하는 듯?
for문에서 대상이 되는 객체는, iterable이라도 자동으로 iterator로 변환된다
제네레이터 이터레이터를 반환하는 함수다
- 함수이다
- yield 구문을 포함한다.
차이점 1 : next 메서드의 동작
| Generator Iterator | Iterator |
|---|---|
| 1. 처음일 경우, 처음 만나는 yield문까지 실행한다. 2.그 다음 yield문까지 실행한다. |
컨테이너의 다음 값을 반환한다. |
차이점 2 : 메모리
| Generator Iterator | Iterator |
|---|---|
| next가 수행되는 시점에 값이 계산되고 반환됨 | 미리 계산된 값들을 next 시점에 반환만 함 |