빠르게 활용하는 파이썬3 스터디(ch1~4)
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 2,130 views

 

Statistics

Views

Total Views
2,130
Views on SlideShare
2,126
Embed Views
4

Actions

Likes
3
Downloads
17
Comments
0

2 Embeds 4

http://cafe.naver.com 3
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • A+bi 에서 b가 0인것은 실수A가 0인것을 허수 켤레복소수 : 허수부분의부호를바꾼것.
  • 변경가능한것과변경불가능한것들조사를해서

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

  • Python study Ahn seong hyun
  • table of contents1. 파이썬 개요 및 설치2. 자료형 및 연산자3. 함수4. 제어
  • About Python. 1. 파이썬 개요 및 설치파이썬이란?- 1991년 귀도 반 로썸이 발표한 인터프리터 언어- 3대 구글 언어- 구글 안드로이드 지원특징- 가독성 : 블록 들여쓰기 구분- 풍부한 라이브러리- 접착성 : C 모듈과 연계가능- 무료- 유니코드- 동적타이핑: 런타임시 타입 체크, 자동 메모리 관리파이썬의 종류- Cpython : C로 작성된 파이썬 (파이썬)- Jthons : java로 구현된 파이썬, 자바 가상머신에서 작동 가능, 자바 클래스 이용- Ironthon : c#으로 구현- Pypy : 파이썬으로 구현된 파이썬
  • 버전의 변화 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
  • 버전의 변화 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‟>
  • 파이썬 설치 및 실행 1. 파이썬 개요 및 설치 http://www.python.org/download- 윈도우- 맥 실습- python idle 실행
  • 들여쓰기 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)
  • 소스코드 인코딩 1. 파이썬 개요 및 설치 주석 # >>> if a==1: #vmflsxm #adsfadf print(2) 2 실행 파일과 소스코드 인코딩시 “#” 사용 #!/usr/bin/python #coding:latin-1 Coding 지시자를 이용해서 인코딩 지정(디폴트 : 아스키(ASCII)) #-*- coding: utf-8 -*-
  • 기타 문법 1. 파이썬 개요 및 설치 세미콜론(;)- 일반적인 프로그래밍언어에서 사용- 붙여도 상관 없음.- 단, 한 라인에 다 쓸경우 세미콜론으로 구분함. 문장이 끝나지 않았을 경우 “” 으로 그 사실을 명시해 줄수도 있음. (14p) - but, 깨끗한 코드를 위해서 쓰지말자.
  • 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))~
  • 변수명 2. 자료형 변수명 : 문자, 숫자, 언더바- 숫자가 맨압에 올수 없다.- 대소문자 구별- 예약어는 변수명으로 사용할 수 없다. (for, whitle, class.. ) 치환 연산자- 변수명 = 값 다른 형태- (a, b) = (1, 2) 튜플- [c, d] = [3.4] - 리스트- e=f=g=1 - 다중치환
  • 수치형 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
  • 수치형 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)
  • 수치형 2. 자료형 연산자치환연산자 : =더하기빼기곱하기나누기나머지(%)거듭제곱(**): 제곱보다 거듭제곱의 연산이 우선순위가 더 높다.정수 나누기(//): 나누기에서 몫(정수부)만 취함.
  • 문자열 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
  • 문자열 2. 자료형 줄바꿈, 탭, 등의 특수문자의 표현 n : 줄바꿈 t : 탭 r : 캐리지리턴 0 : 널 : ‟ : „ ” :” >>> print("t hello n tom r john ") hello tom john
  • 문자열 2. 자료형 Raw문자열(r) : 이스케이프 문자가 적용되지 않는 문자열 출력시 >>> print(r"tash84nkk") SyntaxError: unexpected indent >>> print("rtash84nkk") SyntaxError: unexpected indent >>> print(r"tash84nkk") tash84nkk >>> 문자열 연산자 더하기(+) 문자열 더하기(더하기는 문자열 상수끼리는 생략 가능) 곱하기(*) 문자열 반복 >>> py+thon python >>> py*10 pypypypypypypypypypy >>>
  • 문자열 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”
  • 문자열 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 >>>
  • 유니코드 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>
  • 유니코드 2.자료형유니코드 to 문자 >>> chr(97) a문자 to 유니코드 >>> ord(a) 97현재 시스템의 인코딩 확인 >>> import sys >>> sys.stdin.encoding us-ascii >>> sys.stdout.encoding us-ascii >>>
  • 리스트 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(위치, 문자열)
  • 리스트 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 >>>
  • 리스트 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
  • 리스트 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]>>>
  • 세트 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}
  • 튜플 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
  • 리스트, 세트, 튜플 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
  • 사전 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
  • 사전 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)
  • 사전 2.자료형키 가져오기 (keys())>>> for a in colors.keys(): print(a)cherryappleBanana값 가져오기(values())>>> for a in colors.values(): print(a)redgreenyellow
  • 사전 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>
  • 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
  • 얕은복사/깊은복사에 대해서 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
  • 얕은복사/깊은복사에 대해서 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]
  • 함수의 정의 3. 함수 구조def <함수명> (인수 1, 인수 2, ..): def times(a,b): <구문> return a* return <반환값>함수의 생성과정(41p)- 메모리 공간 어딘가에 함수객체가 생성- 함수이름은 생성된 메모리 공간의 주소를 가리키는 역할을 함.globals() : 현재 생성된 함수 객체를 볼수 있는 내장 함수.mytimes = times// 함수 레퍼런스(함수객체에 대한주소)를 다른 변수에 할당할 수 있음. 복사가 아닌 레퍼런스 복사// mytimes, times 둘다 동일한 함수를 가리키고 있다.
  • return 3. 함수- 다른 언어와 다르게 어떤종류의 객체도 돌려 줄수 있다.- 여러값을 튜플로 묶어서 처리 할수 있음.- return을 사용하지 않거나, return 만 적으면 None 값이 리턴됨.- 오직 한개의 객체만 리턴 할수 있다. 여러개의 경우, 하나의 튜플 객체로 붂어서 리턴한다. (44p)
  • 인수 전달 3. 함수- 파이썬에서 인수는 레퍼런스를 이용해서 전달- 인수 변수의 변경가능성에 따라서 내부에서 처리하는 방식이 다르다. 변경가능성은 타입에 따라 다르다. (44p 예제)- 변경불가능한 경우, 레퍼런스 방식으로 인수를 받아도, 함수 내부에서의 변경이 외부에 영향을 미치지 않는다. global : x ->10 local ; x->1 global : x->10- 변경이 가능한 경우 : 리스트, 튜플 ..- 함수 안에서 변경하게 되면, 외부에 있는 것도 같이 변경하게 된다. (방지하려면 깊은 복사 (46p)
  • 스코핑 룰 3. 함수 이름 공간 : 프로그램에서 쓰이는 이름들이 저장되는 공간 a = [1, 2, 3] - 1, 2, 3 리스트를 담는 메모리 공간이 생성되고, 그 메모리를 가리키는 주소를 a가 가지고 있음. - “a” 라는 이름은 이름공간에 저장되게 된다. - 이름은 미리 생성되지 않고, 치환될때, 만들어 지기때문에 이름은 이름공간에서 변경, 삭제, 검색이 가능하다. 함수의 이름 공간 - 함수는 함수만의 이름공간을 별도로 가진다. - 함수내부의 변수는 함수 내부의 이름공간을 참조한다. - 만약, 해당 변수를 함수 내부의 이름공간에서 찾지 못하면, 상위의 이름 공간에서 찾는다. - 함수 내부를 지역영역, 외부를 전역영역, 파이썬 자체에서 정의한 내용을 내장영역 - LGB규칙 : 파이썬에서 이름을 검색하는 순서 - 함수에서 전역변수를 변경하려면, global 키워드를 사용하면 됨. (47p) - 내장영역 이름 보기 __builtins__
  • 함수 인수 3. 함수 파이썬의 4가지 함수 인수의 모드 : 기본값 인수, 키워드 인수, 가변인수 리스트, 정의되지 않은 인수 기본인수 - 인수에 기본값을 지정하는것, 인수를 전달하지 않아도 처리됨(49p), 기본값 인수가 뒤에는 일반인수가 올수 없음. 키워드 인수 - 인수이름으로 값을 전달, 인수의 순서에 상관없이 인수의 이름에 맞춰서 전달(50p), 일반인수 다음에 키워드 인수 사용. 가변인수 리스트 - 인수의 개수가 정해지지 않은 인수 받기, 함수 정의시 * 를 인수에 붙여 쓴다. 해당 인수를 튜플로 처리됨(51p) 정의되지 않은 인수 -함수 정의시, ** 을 붙여서 정의후, 사전 형식으로 전달하면, 정의하지 않은 인수로 값을 전달 받을수 있다.(52p) 위의 인수 타입들은 정의시, 절대 일반인수 다음에 정의될수 없다.
  • lambda 함수와 재귀적 호출 3. 함수 Lambda 함수 - 함수의 이름이 없고 함수의 객체만 존재하는 익명 함수 (52p) - return 을 적을수 없다. 여러개의 이수를 받을수 없고 하나의 리턴값을 돌려준다. - 한줄의 간단한 함수가 필요시 사용 구성 lambda 인수 : <구문> lambda x, y: x*y재귀적 호출 - 함수내부에서 자기자신을 호출하는 것(54p)
  • pass 3.함수 Pass - 함수 및 클래스에서 아무런 동작도 수행하지 않는다. >>> while True: pass - 계속 while 문만 실행함. - 아무것도 하지 않는 함수, 클래스를 만들경우 사용 >>> class temp: pass
  • __doc__와 help 3. 함수 help() - API문서를 보여주는 help - help(print), help(globals) 내장함수에 대한 정보를 알수 있다. - 사용자 정의의 함수도 help를 통해서 볼 수 있다.__doc__속성 - 함수에 특별한 설명을 달고 싶을때 사용 - plus.__doc__=“return the sum of a, b” //이런 식으로 설정 - help(plus)를 하면, 해당 내용을 볼 수 있다. - 함수 생성시, 함수 처음 시작 부분에(: 이후) “””, “ 를 이용해서 지정 할 수도 있다. (58p)
  • 이터레이터 3. 함수for 문의 동작원리 - 순회가능한 객체(리스트, 튜플, 문자열)에서 이터레이터 객체 반환 - 이터레이터 객체의 __next()__ 함수를 호출하, StopIteration 예외를 만날때까지 반복 - 이터레이터는 내부의 반복문을 관리해 주는 역할 it = iterator(s) //이터레이터 객체 가져오기 next(it) // 현재 이터레이터가 가리키고 있는 값 리턴, 객체의 다음 요소 가리팀 it.__next()__() //직접실행 가능.
  • 제너레이터 3. 함수- 함수는 return 후에, 함수 객체가 스택에서 사라진다.- return 대신에 yield를 적어주면 함수를 끝내지 않고 호출한 곳으로 값을 전달함. (60p) def abc(): data = “abc” for char in data: yield char- yield 를 사용하면, 함수의 상태가 그대로 보존 시킬수가 있다.- 위의 예제에서 yield 이후에 for문이 초기화 되지 않아서, a, b, c, 를 차례로 호출 할 수가 있다.- 메모리 절약이 가능하다. 미리 데이터를 만들어 놓을 필요없이 생성이 가능함.