Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

빠르게 활용하는 파이썬3 스터디(ch1~4)

  • Login to see the comments

빠르게 활용하는 파이썬3 스터디(ch1~4)

  1. 1. Python study Ahn seong hyun
  2. 2. table of contents1. 파이썬 개요 및 설치2. 자료형 및 연산자3. 함수4. 제어
  3. 3. About Python. 1. 파이썬 개요 및 설치파이썬이란?- 1991년 귀도 반 로썸이 발표한 인터프리터 언어- 3대 구글 언어- 구글 안드로이드 지원특징- 가독성 : 블록 들여쓰기 구분- 풍부한 라이브러리- 접착성 : C 모듈과 연계가능- 무료- 유니코드- 동적타이핑: 런타임시 타입 체크, 자동 메모리 관리파이썬의 종류- Cpython : C로 작성된 파이썬 (파이썬)- Jthons : java로 구현된 파이썬, 자바 가상머신에서 작동 가능, 자바 클래스 이용- Ironthon : c#으로 구현- Pypy : 파이썬으로 구현된 파이썬
  4. 4. 버전의 변화 1. 파이썬 개요 및 설치 파이썬 2.x 와 3 는 하위 호환성을 유지 하고 있지 않다.1. print 함수의 변화 print “welcome to”, “python 3k”  print (“welcome to”, “python3k”) 괄호의 추가, 구분자 ,끝라인, 출력 지정 가능(8장 입출력)2. long 형 대신에, int 형만 type(2**31) type(2**31) <2의 31 제곱근> <type long> <class int> int/int 의 결과는 int 가 아니라, float 1/2 = 0 3/2 = 1 3/2 = 1.5
  5. 5. 버전의 변화 1. 파이썬 개요 및 설치3. String, Unicode의 체계의 변화 2.x style type(„가‟) <type „str‟> type<„가‟.decode(„utf8‟)> <type „unicode‟> type<u„가‟> <type „unicode‟> 파이썬 2.x 에서는 일반 스트링이 인코딩 있는 문자열이었고 유니코드가 따로 있어서 디코딩으로 유니코드 변환을 해야 3 style 했는데, 파이썬 3에서는 따로 유니코드를 지정하지 않고 일반 스트링이 유니코드와 동일하고 인코딩이 있는 문자열을 bytes로 표현됩니다. type<u„가‟> Syntax error type(„가‟) <type „str‟> type<„가‟.decode(„cp949‟)> <type „bytes‟>
  6. 6. 파이썬 설치 및 실행 1. 파이썬 개요 및 설치 http://www.python.org/download- 윈도우- 맥 실습- python idle 실행
  7. 7. 들여쓰기 1. 파이썬 개요 및설치 들여쓰기(indentation)- 파이썬의 가장 큰 특징- 가독성을 높일수 있는 수단은 있으나, 버그를 찾기 어려운 면이 있다. 코드블록 1: 코드블록2 if a == 1: 코드블록 3: print(1) 코드블록4- 코드블록2가 코드블록 1의 하위그룹임.- 하위그룹이 오기 위해서는 바로 전에 콜론(:)이 사용되어야 한다.- 동일한 코드블록 내, 정확히 같은 스페이스 같은 탭을 이용한 들여쓰기를 해야 한다. >>> if a==1: print(1) print(2) SyntaxError: unexpected indent- 한줄로도 가능함. >>> if a==1: print(1)
  8. 8. 소스코드 인코딩 1. 파이썬 개요 및 설치 주석 # >>> if a==1: #vmflsxm #adsfadf print(2) 2 실행 파일과 소스코드 인코딩시 “#” 사용 #!/usr/bin/python #coding:latin-1 Coding 지시자를 이용해서 인코딩 지정(디폴트 : 아스키(ASCII)) #-*- coding: utf-8 -*-
  9. 9. 기타 문법 1. 파이썬 개요 및 설치 세미콜론(;)- 일반적인 프로그래밍언어에서 사용- 붙여도 상관 없음.- 단, 한 라인에 다 쓸경우 세미콜론으로 구분함. 문장이 끝나지 않았을 경우 “” 으로 그 사실을 명시해 줄수도 있음. (14p) - but, 깨끗한 코드를 위해서 쓰지말자.
  10. 10. 2.x 를 3으로 변환하기 1. 파이썬 개요 및 설치 설치폴더/Tools/Scripts/ 의 2to3.py 를 이용Test.pydef div(a): print u"Result :",a/2num = input("input any number:")div(int(num))seonghyeon-an-ui-MacBook-Pro:~ seonghyeonan$ /usr/bin/2to3 -w test.pyRefactoringTool: Skipping implicit fixer: bufferRefactoringTool: Skipping implicit fixer: idiomsRefactoringTool: Skipping implicit fixer: set_literalRefactoringTool: Skipping implicit fixer: ws_commaRefactoringTool: Refactored test.py--- test.py (original)+++ test.py (refactored)@@ -1,4 +1,4 @@ def div(a):- print u"Result :",a/2-num = raw_input("input any number:")+ print("Result :",a/2)+num = input("input any number:") div(int(num))RefactoringTool: Files that were modified:RefactoringTool: test.py-w 옵션을 주지 않으면 어떻게 변경해야하는지만 화면에 출력되고 파일을 변경되지 않는다.def div(a): print("Result :",a/2)num = input("input any number:")div(int(num))~
  11. 11. 변수명 2. 자료형 변수명 : 문자, 숫자, 언더바- 숫자가 맨압에 올수 없다.- 대소문자 구별- 예약어는 변수명으로 사용할 수 없다. (for, whitle, class.. ) 치환 연산자- 변수명 = 값 다른 형태- (a, b) = (1, 2) 튜플- [c, d] = [3.4] - 리스트- e=f=g=1 - 다중치환
  12. 12. 수치형 2. 자료형 수치형 데이터 타입- int, long, float, complex int : integer 10진수 정수 정수 앞에 „0o‟ 8진수, „0b‟ 2진수, „0x‟ 16진수입력을 받아서 원하는 진수로 변환하는 함수 oct(), bin(), hex() : 출력이 문자열임. >>> 0o10 8 >>> 0b10 2 >>> 0x10 16 >>> oct(a) 0o144 >>> hex(38) 0x26 >>> bin(a) 0b1100100
  13. 13. 수치형 2. 자료형 2.X버전에서는 int 형의 범위를 넘는것은 long 을 이용 3 버전 에서는 long형이 없어지고 모두 int 형으로 처리됨. float : 실수형 표현 >>> type(3.14) <class float> >>> type(314e-2) <class float> 복소수 >>> x= 3-4j >>> type(x) <class complex> >>> x.imag : 허수부 -4.0 >>> x.real : 실수부 3.0 >>> x.conjugate() :켤레복소수 (3+4j)
  14. 14. 수치형 2. 자료형 연산자치환연산자 : =더하기빼기곱하기나누기나머지(%)거듭제곱(**): 제곱보다 거듭제곱의 연산이 우선순위가 더 높다.정수 나누기(//): 나누기에서 몫(정수부)만 취함.
  15. 15. 문자열 2. 자료형 파이썬에서는 문자를 „ „ 또는 “” 으로 묶에서 표현한다. >>> "ash84" ash84 >>> ash84 ash84 >>> ash84" SyntaxError: EOL while scanning string literal >>> type("ash84") <class str> >>> type(ash84) <class str> 다량의 문자열 “”‟ 또는 „‟‟ >>> print(""" hello my my car goo d """) hello car goo d
  16. 16. 문자열 2. 자료형 줄바꿈, 탭, 등의 특수문자의 표현 n : 줄바꿈 t : 탭 r : 캐리지리턴 0 : 널 : ‟ : „ ” :” >>> print("t hello n tom r john ") hello tom john
  17. 17. 문자열 2. 자료형 Raw문자열(r) : 이스케이프 문자가 적용되지 않는 문자열 출력시 >>> print(r"tash84nkk") SyntaxError: unexpected indent >>> print("rtash84nkk") SyntaxError: unexpected indent >>> print(r"tash84nkk") tash84nkk >>> 문자열 연산자 더하기(+) 문자열 더하기(더하기는 문자열 상수끼리는 생략 가능) 곱하기(*) 문자열 반복 >>> py+thon python >>> py*10 pypypypypypypypypypy >>>
  18. 18. 문자열 2. 자료형 문자열 인덱싱첫번째 문자 : 0 부터 시작>>> name = "ash84">>> name[0]a>>> name[5]Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> name[5]IndexError: string index out of range>>> name[0] = "p"Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> name[0] = "p"TypeError: str object does not support item assignment>>>인덱싱 오류인덱싱을 이용한 문자열 변경은 안됨.다만 문자열 전체를 재 할당시 가능 name=“psh84”
  19. 19. 문자열 2. 자료형 문자열 슬라이싱(변수명 [시작번호 : 끝번호]) >>> name[0:2] as >>> name[:-2] ash‟ >>> name[-2:] 84 >>>음수의 경우, 문자열의 끝을 0으로 보고 센다.: 위치를 생략한 경우, 문자열의 처음이나 끝위치로 간주한다. 문자열 <-> 수치 변환 각 타입 클래스의 생성자 이용 >>> str(3.14) 3.14 >>> int("0099") 99 >>> int("adsfas") Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> int("adsfas") ValueError: invalid literal for int() with base 10: adsfas >>> float("32") 32.0 >>>
  20. 20. 유니코드 2.자료형인코딩이란?= 각각의 문자열을 표현하는 방식유니코드란 ?= 세계의 모든 문자 코드들을 일관된 방식으로 표현할 수 있는 체계로 만든것.파이썬 2.x 버전에서는 일반적인 문자열을 유니코드로 변경하는 unicode() 함수 및 문자열 앞에 „u‟를 붙여야 했음.파이썬 3 버전에서는 일반 문자열이 모두 유니코드임.- 개발자가 글자깨짐을 고려하지 않아도 됨.- 유니코드 외의 인코딩이 있는 문자열의 bytes로 표현됨 >>> type("a") <class str‟> >>> "a".encode(utf-8) ba >>> type("a".encode(utf-8)) <class bytes> >>> b = "a".encode(utf-8) >>> type(b) <class bytes>
  21. 21. 유니코드 2.자료형유니코드 to 문자 >>> chr(97) a문자 to 유니코드 >>> ord(a) 97현재 시스템의 인코딩 확인 >>> import sys >>> sys.stdin.encoding us-ascii >>> sys.stdout.encoding us-ascii >>>
  22. 22. 리스트 2. 자료형 리스트- 값의 나열- 순서 존재- 여러종류 담을수 있다.- 0 부터 시작하는 인덱스 및 문자열 슬라이싱 가능. >>> colors=[red,green,blue] >>> type(colors) <class list> >>> colors.append(gold) //append(문자열) >>> colors [red, green, blue, gold] >>> colors [red, pruple, green, blue, gold] //insert(위치, 문자열)
  23. 23. 리스트 2. 자료형 extend() >>> colors.extend([white,black]) //extend() 한번에 여러값을 삽입, 리스트나 튜플 삽입등의 반복되는 값을 넣어야 함. >>> colors [red, pruple, green, blue, gold, white, black‟] >>> colors.extend("gray") //하나 삽입시 쪼개져서 들어감. >>> colors [red, pruple, green, blue, gold, white, black, g, r, a, y] 더하기(+) 연산 지원 >>> colors+=["gray"] >>> colors [red, pruple, green, blue, gold, white, black, g, r, a, y, gray]반복되는 값으로 넣지 않으면, 쪼개져서 들어감.index(문자열) : 문자열 위치 찾기 <가장 앞에 있는것 찾는다.>Index(문자열, 시작위치) : 시작위치 이후에 문자열 위치 찾기Index(문자열, 시작위치, 끝위치) : 시작위치와 끝 위치 사이의 문자열 위치 찾기 >>> colors+=["red"] >>> colors.index("red") 0 >>> colors.index("red",1) 12 >>> colors.index("red",1,5) SyntaxError: unexpected indent >>>
  24. 24. 리스트 2. 자료형 현재 리스트내의 해당 문자열이 몇개 있는지 count() Pop(위치) : 해당 위치의 문자열 추출 , 생략하면 제일 뒤에 있는것 추출추출하고 나면 리스트 상에서 사라짐. >>> colors.pop() red >>> colors [red, pruple, green, blue, gold, white, black, g, r, a, y, gray] >>> colors.pop(1) pruple >>> colors [red, green, blue, gold, white, black, g, r, a, y, gray] >>> 해당 문자열을 리스트에서 삭제 : remove(문자열) - 단순삭제동일한 값이 2개 있으면, 앞에 있는것 먼저 삭제함. >>> colors.append("red") >>> colors [red, green, blue, gold, white, black, g, r, a, y, gray, red] >>> colors.remove("red") >>> colors [green, blue, gold, white, black, g, r, a, y, gray, red] >>> colors.remove("red") >>> colors [green, blue, gold, white, black, g, r, a, y, gray] >>> colors.remove("red") Traceback (most recent call last): File "<pyshell#35>", line 1, in <module> colors.remove("red") ValueError: list.remove(x): x not in list
  25. 25. 리스트 2. 자료형 sort() 메소드 : 원하는 방식으로 정렬//키지정 - 뒤에 한 문자만으로 정렬.>>> def mysort(x): return x[-1]>>> colors[green, blue, gold, white, black, g, r, a, y, gray]//정한 키로 정렬>>> colors.sort(key = mysort)>>> colors[a, gold, blue, white, g, black, green, r, y, gray]//역순정렬>>> colors.sort(key=mysort, reverse = True)>>> colors[y, gray, r, green, black, g, blue, white, gold, a]>>>
  26. 26. 세트 2.자료형 세트 - 수학에서의 집합 - 값들의 모임, 단 순서는 없음. - { } 묶어서 정의 - a = {1,2,3} - >>> type(a) - <class set>교집합/합집합/차집합 >>> a.union(b) {1, 2, 3, 4, 5} >>> a.intersection(b) {3} >>> a-b {1, 2} >>> a|b //합집합 {1, 2, 3, 4, 5} >>> a&b //교집합 {3}
  27. 27. 튜플 2.자료형튜플- 리스트와 유사- [] 대신에 () 표현- 읽기전용임, 리스트에 비해서 함수가 적지만, 속도는 더 빠름.- 2개의 함수, count() 와 index() 만 제공 >>> t = (1, 2, 3) >>> type(t) <class tuple> >>> t.count(1) 1 >>> t.index(2) 1 - 다중 할당 시, 사용됨. >>> a, b = 1, 2 >>> print(a, b) 12 >>> (a, b) = (1, 2) >>> print(a, b) 12 변수가 하나 더 필요한 swap 에도 간단히 해결 가능 >>> a,b = b, a >>> print(a, b) 21
  28. 28. 리스트, 세트, 튜플 2.자료형>>> a(1, 2, 3)>>> type(a)<class tuple>>>> b = list(a)>>> b[1, 2, 3]>>> type(b)<class list>>>> c = tuple(b)>>> type(c)<class tuple>>>> c(1, 2, 3)각각 list(), set(), tuple() 로 서로서로 변환이 가능함.in 연산자 : 내부에 어떤 값이 있는지 확인할때, „값 in 리스트 또는 세트 또는 튜플‟>>> 1 in aTrue>>> 2 in bTrue>>> 3 in cTrue>>> 5 in cFalse
  29. 29. 사전 2.자료형사전 (키와 쌍으로 이루어짐. )//생성자를 이용해서 사전 생성 , 키 = 값>>> d = dict(a = 1, b = 3, c = 5)>>> type(d)<class dict>>>> d{a: 1, c: 5, b: 3}>>> colors = {"apple":"red", "banana":"yellow"}>>> colors{apple: red, banana: yellow}>>> type(colors)<class dict>>>> colors["apple"] // 키로 값 가져오기red>>> colors[reds]>>> colors[reds] //키값없으면 에러Traceback (most recent call last): File "<pyshell#103>", line 1, in <module> colors[reds]KeyError: reds>>> colors[0] //인덱스 지원 안함.Traceback (most recent call last): File "<pyshell#106>", line 1, in <module> colors[0]KeyError: 0
  30. 30. 사전 2.자료형키값 추가>>> colors["cherry"] = "red">>> colors{cherry: red, apple: red, banana: yellow}>>> colors["apple"] = "green” // 키값이 겹치면 해당키에 값 재할당>>> colors{cherry: red, apple: green, banana: yellow}사전 가져오기 (items())>>> for c in colors.items(): print(c)(cherry, red)(apple, green)(banana, yellow)>>> for a in colors.items(): print(a)(cherry, red)(apple, green)(banana, yellow)
  31. 31. 사전 2.자료형키 가져오기 (keys())>>> for a in colors.keys(): print(a)cherryappleBanana값 가져오기(values())>>> for a in colors.values(): print(a)redgreenyellow
  32. 32. 사전 2.자료형사전 삭제 del 이용, 키 값으로 하나씩 삭제 가능 >>> del colors["apple"] >>> colors {cherry: red, banana: yellow} clear() 를 이용 한번에 모두 삭제 >>> colors.clear() >>> colors {}다양한 자료형을 섞어서 사용 가능 >>> person = {"name":"ash84", "job":{1, 2, 3}} >>> person {job: {1, 2, 3}, name: ash84} >>> type(person) <class dict>
  33. 33. bool 2. 자료형 Bool- 참과 거짓을 나타내는 자료형 //bool() 함수의 사용- True, False 만이 가능함.- 논리연산 과 각종 비교연산의 결과로 사용 >>> bool(0) >>> isexist = True False >>> bool(-1) >>> type(isexist) True <class bool> >>> bool(1) True //대소문자 유의 >>> bool() // 빈문자열 >>> isexist = true; False >>> bool("asdf") Traceback (most recent call last): True File "<pyshell#150>", line 1, in <module> >>> bool(None) isexist = true; False NameError: name true is not defined비교연산- <=, >= ,<, >, != , ==논리연산- and(&), or(|) not수치를 논리연산에 사용0 = False음수를 포함한 다른 값 = True
  34. 34. 얕은복사/깊은복사에 대해서 2. 자료형모든 변수는 해당객체의 주소를 가지고 있음. A = 1 //1이란 객체 생성후 A라는 변수에 1 이란 객체의 주소를 저장함. //a 와 b 가 같은 객체를 공유하게 됨. >>> a = [1, 2, 3] >>> b = a >>> a[0] = 11 >>> a [11, 2, 3] >>> b [11, 2, 3] >>> id(a) // 주소 확인 4346207624 >>> id(b) 4346207624//얕은 복사 : 주소값을 공유하는 것, 주소값을 복사해서 주는 형태 //예외 : int 형의 경우 깊은 복사 ???? >>> a = 10 >>> b = a >>> id(a) // 주소 확인 4296853408 >>> id(b) 4296853408 >>> a 10 >>> b 10 >>> a = 3 >>> a 3 >>> b 10
  35. 35. 얕은복사/깊은복사에 대해서 2. 자료형강제로 깊은 복사>>> a = [1, 2, 3]>>> b = a[:] // a 에 있는것을 처음부터 끝까지 다 복사 시켜라.>>> a[0] = 10>>> a[10, 2, 3]>>> b[1, 2, 3]>>>일반적인 경우의 copy 모듈 사용////깊은 복사>>> import copy>>> a = [1,2,3]>>> b = copy.deepcopy(a)>>> a[0] = 30>>> a[30, 2, 3]>>> b[1, 2, 3]
  36. 36. 함수의 정의 3. 함수 구조def <함수명> (인수 1, 인수 2, ..): def times(a,b): <구문> return a* return <반환값>함수의 생성과정(41p)- 메모리 공간 어딘가에 함수객체가 생성- 함수이름은 생성된 메모리 공간의 주소를 가리키는 역할을 함.globals() : 현재 생성된 함수 객체를 볼수 있는 내장 함수.mytimes = times// 함수 레퍼런스(함수객체에 대한주소)를 다른 변수에 할당할 수 있음. 복사가 아닌 레퍼런스 복사// mytimes, times 둘다 동일한 함수를 가리키고 있다.
  37. 37. return 3. 함수- 다른 언어와 다르게 어떤종류의 객체도 돌려 줄수 있다.- 여러값을 튜플로 묶어서 처리 할수 있음.- return을 사용하지 않거나, return 만 적으면 None 값이 리턴됨.- 오직 한개의 객체만 리턴 할수 있다. 여러개의 경우, 하나의 튜플 객체로 붂어서 리턴한다. (44p)
  38. 38. 인수 전달 3. 함수- 파이썬에서 인수는 레퍼런스를 이용해서 전달- 인수 변수의 변경가능성에 따라서 내부에서 처리하는 방식이 다르다. 변경가능성은 타입에 따라 다르다. (44p 예제)- 변경불가능한 경우, 레퍼런스 방식으로 인수를 받아도, 함수 내부에서의 변경이 외부에 영향을 미치지 않는다. global : x ->10 local ; x->1 global : x->10- 변경이 가능한 경우 : 리스트, 튜플 ..- 함수 안에서 변경하게 되면, 외부에 있는 것도 같이 변경하게 된다. (방지하려면 깊은 복사 (46p)
  39. 39. 스코핑 룰 3. 함수 이름 공간 : 프로그램에서 쓰이는 이름들이 저장되는 공간 a = [1, 2, 3] - 1, 2, 3 리스트를 담는 메모리 공간이 생성되고, 그 메모리를 가리키는 주소를 a가 가지고 있음. - “a” 라는 이름은 이름공간에 저장되게 된다. - 이름은 미리 생성되지 않고, 치환될때, 만들어 지기때문에 이름은 이름공간에서 변경, 삭제, 검색이 가능하다. 함수의 이름 공간 - 함수는 함수만의 이름공간을 별도로 가진다. - 함수내부의 변수는 함수 내부의 이름공간을 참조한다. - 만약, 해당 변수를 함수 내부의 이름공간에서 찾지 못하면, 상위의 이름 공간에서 찾는다. - 함수 내부를 지역영역, 외부를 전역영역, 파이썬 자체에서 정의한 내용을 내장영역 - LGB규칙 : 파이썬에서 이름을 검색하는 순서 - 함수에서 전역변수를 변경하려면, global 키워드를 사용하면 됨. (47p) - 내장영역 이름 보기 __builtins__
  40. 40. 함수 인수 3. 함수 파이썬의 4가지 함수 인수의 모드 : 기본값 인수, 키워드 인수, 가변인수 리스트, 정의되지 않은 인수 기본인수 - 인수에 기본값을 지정하는것, 인수를 전달하지 않아도 처리됨(49p), 기본값 인수가 뒤에는 일반인수가 올수 없음. 키워드 인수 - 인수이름으로 값을 전달, 인수의 순서에 상관없이 인수의 이름에 맞춰서 전달(50p), 일반인수 다음에 키워드 인수 사용. 가변인수 리스트 - 인수의 개수가 정해지지 않은 인수 받기, 함수 정의시 * 를 인수에 붙여 쓴다. 해당 인수를 튜플로 처리됨(51p) 정의되지 않은 인수 -함수 정의시, ** 을 붙여서 정의후, 사전 형식으로 전달하면, 정의하지 않은 인수로 값을 전달 받을수 있다.(52p) 위의 인수 타입들은 정의시, 절대 일반인수 다음에 정의될수 없다.
  41. 41. lambda 함수와 재귀적 호출 3. 함수 Lambda 함수 - 함수의 이름이 없고 함수의 객체만 존재하는 익명 함수 (52p) - return 을 적을수 없다. 여러개의 이수를 받을수 없고 하나의 리턴값을 돌려준다. - 한줄의 간단한 함수가 필요시 사용 구성 lambda 인수 : <구문> lambda x, y: x*y재귀적 호출 - 함수내부에서 자기자신을 호출하는 것(54p)
  42. 42. pass 3.함수 Pass - 함수 및 클래스에서 아무런 동작도 수행하지 않는다. >>> while True: pass - 계속 while 문만 실행함. - 아무것도 하지 않는 함수, 클래스를 만들경우 사용 >>> class temp: pass
  43. 43. __doc__와 help 3. 함수 help() - API문서를 보여주는 help - help(print), help(globals) 내장함수에 대한 정보를 알수 있다. - 사용자 정의의 함수도 help를 통해서 볼 수 있다.__doc__속성 - 함수에 특별한 설명을 달고 싶을때 사용 - plus.__doc__=“return the sum of a, b” //이런 식으로 설정 - help(plus)를 하면, 해당 내용을 볼 수 있다. - 함수 생성시, 함수 처음 시작 부분에(: 이후) “””, “ 를 이용해서 지정 할 수도 있다. (58p)
  44. 44. 이터레이터 3. 함수for 문의 동작원리 - 순회가능한 객체(리스트, 튜플, 문자열)에서 이터레이터 객체 반환 - 이터레이터 객체의 __next()__ 함수를 호출하, StopIteration 예외를 만날때까지 반복 - 이터레이터는 내부의 반복문을 관리해 주는 역할 it = iterator(s) //이터레이터 객체 가져오기 next(it) // 현재 이터레이터가 가리키고 있는 값 리턴, 객체의 다음 요소 가리팀 it.__next()__() //직접실행 가능.
  45. 45. 제너레이터 3. 함수- 함수는 return 후에, 함수 객체가 스택에서 사라진다.- return 대신에 yield를 적어주면 함수를 끝내지 않고 호출한 곳으로 값을 전달함. (60p) def abc(): data = “abc” for char in data: yield char- yield 를 사용하면, 함수의 상태가 그대로 보존 시킬수가 있다.- 위의 예제에서 yield 이후에 for문이 초기화 되지 않아서, a, b, c, 를 차례로 호출 할 수가 있다.- 메모리 절약이 가능하다. 미리 데이터를 만들어 놓을 필요없이 생성이 가능함.

×