제너레이터
- 제너레이터 함수
- 이터레이터를 생성해주는 함수
- return 키워드 대신 yield 키워드를 사용하여 구현
- 함수의 리턴값으로 제너레이터 객체를 반환
- 이터레이터
- next() 함수 호출 시 계속 그 다음 값을 반환하는 객체- 제너레이터 객체는 next() 함수를 사용해 제너레이터 함수 내부의 코드를 실행
- 제너레이터 객체는 이터레이터와 마찬가지로 next() 함수 호출 시 차례로 값을 반환
딕셔너리로 구성된 리스트에서 최솟값과 최댓값 찾기
- '가격이 가장 저렴한 책'과 '가격이 가장 비싼 책'을 찾고 싶다.
- key 매개변수 사용
sort()
- sort() : 파괴적 함수
- sorted() : 비파괴적 함수, 매개면수론 리스트, 튜플 등을 넣을 수 있음
- 튜플을 넣으면 리스트로 반환됨
- 튜플은 sort()라는 명령어를 제공하지 않음
파이썬의 자료형과 저장 방식
- 기본 자료형
- 숫자(int, float), 문자열(str), 불(bool)
- 가볍고 정형화된 자료형으로 스택(stack)이라는 공간에 쌓아가며 저장
- 객체 자료형
- 기본 자료형을 제외한 모든 자료형
- 무겁고 크기가 정형화되지 않은 자료형으로 힙(heap)이라는 거대한 공간에 저장
- 리스트와 딕셔너리 같은 큰 자료형은 힙에 저장하되, 저장된 위치를 스택에 기록하여 효율적으로 자료를 검색
- heap에 저장된 위치는 주소(address) 또는 레퍼런스(reference)라고 하며 일반적으로 16진수로 표현
함수의 값 복사와 레퍼런스 복사
- 파이썬은 함수를 호출할 때 함수 내부 코드를 실행하기 위해 함수 내부의 변수를 저장할 스택을 추가로 만듦
- 전역 스택 : 가장 외곽에 있는 스택
global 키워드
- 함수 내부에서 전역 스택의 변수 값을 활용한 후, 전역 스택의 변수 값을 교체하려고 할 때 사용
a = 10 def 함수(): print(a) a = 20 함수()
UnboundLocalError
- 함수 외부에 있는 변수 a를 출력하고, append() 함수를 사용해 힘에 있는 리스트를 변경
a = [1, 2, 3] def 함수(): print(a) a.append(4) 함수()
[1,2,3,4]
- 함수 외부에 있는 변수 a를 출력하고, 전역 스택에 있는 변수 a의 값(주소)의 변경을 시도
a = [1, 2, 3] def 함수(): print(a) a = [4, 5, 6] 함수()
UnboundLocalError: local variable ;a; referenced before assigmant