Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Study 2- Basic Syntax

Python Study 2- Basic Syntax

AhnSeongHyun

May 18, 2015
Tweet

More Decks by AhnSeongHyun

Other Decks in Programming

Transcript

  1. 자료형 - None 3 널(null) - 아무것도 없음을 나타냄. >

    none = None > type(none) > <type 'NoneType'> > a1 ! 에러 - 다른 언어와 다르게 선언한다고 null 혹은 0 으로 초기화 되지 않음. - 어떤 값이라도 할당(assign)이 되어야 한다.
  2. 자료형 - 숫자형 5 정수 >>> a = 123 >>>

    a = -178 >>> a = 0 >>> a = 1.2 >>> a = -3.45 >>> a = 4.24E10 >>> a = 4.24e-10 >>> a = 0o177 >>> a = 0x8ff >>> b = 0xABC >>> a = 1+2j >>> b = 3-4J 실수 8진수 16진수 복소수 지수표현법 사용 0o 또는 0O (숫자 0 + 알파벳 o 또는 대문자 O)으로 시작 0X로 시작
  3. 자료형 - 숫자형 연산 6 다른 언어와 거의 다 비슷

     특이한 것들. - i++ 의 증감연산자는 되지 않는다. - 끝수 버리는 나머지 : // 예) 10/3.0 = 3.3333 10//3.0 = 3.0 - 승에 대한 표현 : a**n 예) 2**3 = 8, 10**3 = 1000 a = 10 print divmod(10, 3.0)  기타 함수들 - abs - pow - divmod : 몫과 나머지를 반환 > (3, 1)
  4. 자료형 - 문자열 7 "Hello World" 'Python is fun' """Life

    is too short, You need python""" '''Life is too short, You need python''' 문자열을 만드는 4가지 방법 "ash84's World" 'ash84"s World' 'ash84\"s World' """Life is too short, You need python""" '''Life is too short, You need python''' 따옴표, 쌍따옴표 포함 긴 문자열
  5. 시퀀스(문자열, 리스트, 튜플) 공통 연산 8 연산 설명 a +

    b 연결, 이어붙이기 a * n n 개의 복사본 만들기 a[i] 인덱스 a[i:j] 분할 e in a, e not in a 멤버 포함여부 검사 for e in a 반복문 all(a) a 의 모든 항목이 True 이면 True any(a) a 의 항목중 하나라고 True 이면, True len(a) a의 길이 반환 min(a) a 중에서 가장 작은 항목 반환 max(a) a 중에서 가장 큰 항목 반환
  6. 문자열 함수 10 문자 개수 세기 count 위치 알려주기 find,

    index - index 는 없으면 예외발생, find는 -1 반환,
  7. 문자열 함수 11 문자열 삽입 join - 리스트내 항목 연결시

    많이 사용. 대소문자 변환 lower, upper, swapcase
  8. 문자열 포맷팅 13 코드 설명 %s 문자열 (String) %c 문자

    한개(character) %d 정수 (Integer) %f 부동소수 (floating-point) %o 8진수 %x 16진수 %% Literal % (문자 '%s' 자체) - print 문에서의 사용 문자열 포맷 코드
  9. 자료형 - list 15 - C# 의 ArrayList 와 유사

    - [] 으로 표시 - nested 형태로 가능 > a = [] , a = list() > b = [1, 2, 3] > c = ['Life', 'is', 'too', 'short'] > d = [1, 2, 'Life', 'is'] > e = [1, 2, ['Life', 'is']]
  10. 자료형 - list 17 추가 append 순서 바꾸기 reverse 정렬

    sort, reverse 옵션 사용, (sort([cmp[, key[, reverse]]]))
  11. 리스트 내포 20 리스트내 특정 조건이나 연산으로 새 리스트를 만들기

    위한 연산자 [표현식 for 항목1 in 반복가능객체1: if 조건1 for 항목1 in 반복가능객체1: if 조건1 for 항목n in 반복가능객체n: if 조건n]
  12. 리스트 내포 - 여러 개의 반복문 사용 22 => [6,

    36, 216, 1296, 7, 49, 343, 2401, 8, 64, 512, 4096, 9, 81, 729, 6561]
  13. 자료형 - tuple 23 - () 으로 표시 - 리스트와

    유사 - 값을 변경할수 없다. - 리스트보다 적게 쓰인다. > t1 = () t1 = tuple() > t2 = (1,) > t3 = (1,2,3) > t4 = 1,2,3 > t5 = ('a', 'b', ('ab', 'cd'))
  14. 자료형 - tuple 24 기본 연산 함수에서 주로 사용 -

    return 에서 하나 이상 반환하는 경우, 가변인자
  15. 자료형 - dict 26 - {} 으로 표시 - 순서열이

    아닌, key : value 형태로 데이터 저장 {Key1:Value1, Key2:Value2, Key3:Value3 ...} > d = {} > d = dict() > d = { “name” : “ash84”, “age” : 11}
  16. 자료형 - dict 28 리스트 형식은 key로 쓸수 없다. 변경가능하기

    때문에 tuple 는 변할수 없기 때문에 key 로 쓸수 있다.
  17. 자료형 - dict 29 key 리스트 만들기, keys value 리스트

    만들기, values key, value 쌍으로 얻기, items key로 value 가져오기, get 해당 key가 있는지 조사, in
  18. 변수 30 변수는 메모리공간을 가리키는것. 2 3 a 가 변수이고,

    2 라는 메모리 공간을 가르키는 레퍼런스이다. 변수를 만들때는 ‘=‘ 할당을 해야한다. 선언만으로는 불가. a b
  19. 변수 31  레퍼런스 카운트? - 몇 개의 변수가 메모리

    공간를 가리키는지? - 가비지 컬렉션이 동작하는 단위, - 해당 메모리공간을 가리키는 레퍼런스 카운트가 0이면 메모리 회수 - 2 이 있는 메모리공간(객체)을 가리키는 레퍼런스 카운트는 2개이다. - 3 이 있는 메모리공간(객체)을 가리키는 레퍼런스 카운트는 1개이다. 2 a b c 3
  20. 변수 35  참조와 복사 - 할당의 기본은 참조로 동작

    2 a b 1 참조로 연결되어 있기 때문에 변경가능한 데이터가 변경되면 다 영향을 받는다. [10, 2, 3] a b
  21. 변수 36  리스트 복사본 생성 방식 방법 1, [:]

    을 이용한 복사본 생성 방법 2, copy 모듈을 이용한 복사본 생성
  22. 변수 37  전역변수, global 키워드로 사용시 지정해야 한다. 

    단순히 같은 변수명이라고, 전역변수로 인식하지 않는다.
  23. 함수 - yield 42 생성기(generator)를 만든다. next()를 호출때마다 함수 실행

    next() 호출시, yield 문 까지 실행하고 멈춘다. 다시 호출하면 한번도 돌고, yield 문에서 멈춘다. None을 반환, 혹은 StopIteration 예 외 발생시 종료
  24. 람다(lambda) 45 이름도 요상한것, 익명함수, 축약형 함수 lambda 인자 :

    표현식 이름이 없는 함수로 만들수 있다. 리스트 정렬시, key 를 lambda 로 만든 익명함수를 전달할수 있다.
  25. 내장함수 47 abs 절대값 돌려주는 함수 chr 아스키값을 문자로 변환/ord

    문자를 아스키로 변환 dir 해당 객체가 가지고 있는 변수/함수 보여주기
  26. 내장함수 49 hex 16진수, oct 8진수 변환 int/str 숫자형 혹은

    문자열 형으로 변환 id 레퍼런스 보여주기
  27. 내장함수 50 map(함수, 반복가능한 자료형) 함수를 각각의 요소에 대입하고 리스트로

    출력 input 사용자 입력 받는 함수 eval 실행가능한 문자열을 받아서 실행하고 결과를 보여준다.
  28. 내장함수 51 open 파일읽기, 지정한 읽기 방법에 따라서 입력을 받아서

    파일객체 리턴 mode 설명 w 쓰기 모드로 파일 열기 r 읽기 모드로 파일 열기 a 추가 모드로 파일 열기 b 바이너리 모드로 파일 열기 별 다른 라이브러리 없이, 바로 사용가능.
  29. 내장함수 52 sorted 시퀀스 자료형을 정렬하는 역할, .sort 는 호출한것

    자체를 정렬하고 반영한다. 반환하지 않는다. zip 동일한 개수의 자료형을 묶어주는 역할
  30. 함수안의 함수 53 1급 함수(First Class Function) - 함수를 다른

    함수에 인수로 전달 - 반환값으로 전달 - 변수나 자료구조에 저장 할수 있는 함수
  31. 함수 클로저 54 - 함수가 참조할수 있는 비지연변수나 일반변수를 저장한

    참조환경이 함수와 함께 제공, 뭔애기? - 쉽게 말하면, 반환시점의 함수객체가 내부의 지역변수, 비지역변수의 값을 유지한다. abc1 abc1 abc23 dan1 dan11 dan23
  32. 함수 클로저 55 a, b, c = ‘a’, ‘b’, ‘c’

    cache[‘abc1’] a, b, c = ‘a’, ‘b’, ‘c’ cache[‘abc1’] f1 f2 - 각각의 함수객체가 독립적인 이름공간을 갖는다. - 각각의 공간은 함수객체(f1, f2)가 삭제될 때 까지 유지. - 함수인데, 마치 클래스의 별도의 인스턴스를 만들어서 동작하는것처럼 사용. - 내부 함수의 환경을 기록. - 기존 함수에 추가기능을 넣어서 함수를 포장하려고 할때, 유용하다.
  33. 함수 클로저 56 a, b, c = ‘a’, ‘b’, ‘c’

    cache[‘abc1’] a, b, c = ‘a’, ‘b’, ‘c’ cache[‘abc1’] f1 f2 (<cell at 0x01DB4ED0: str object at 0x01D84DE8>, <cell at 0x01DBF5F0: str object at 0x01D84E00>, <cell at 0x02501650: str object at 0x01E0E068>, <cell at 0x02501670: dict object at 0x01DB2AE0>) (<cell at 0x02501690: str object at 0x01D84458>, <cell at 0x025016B0: str object at 0x01D84DE8>, <cell at 0x025016D0: str object at 0x01D844D0>, <cell at 0x025016F0: dict object at 0x025055D0>)
  34. for 57 기본 스타일 for i in range(0, 10): print

    i for(int i=0; i<10; i++) { … } @C# @Python
  35. for 58 list, tuple, 문자열 foreach (int element in arrayList)

    { … } for e in elements: pass for c in "string": print c @C# @Python
  36. while 59 while 조건문: 명령문 # -*- coding:utf-8 -*- treeHit

    = 0 while treeHit < 10: treeHit = treeHit +1 print("나무를 %d번 찍었습니다." % treeHit) if treeHit == 10: print(“나무가 넘어갑니다.”)
  37. continue 61 그 자리에서 반복문으로 돌아가라 는 의미 a =

    0 while a < 10: a = a+1 if a % 2 == 0: continue if a % 5 == 0: break print(a) > 1 3 2의 배수인 경우, 다음 문을 진행하지 않고 되돌아감.
  38. True vs. False 63 자료형 참 거짓 숫자 3 0

    문자열 "abc" "" list [1,2,3] [] tuple (1,2,3) () dict {"a":"b"} {} 거짓을 기억하자!
  39. True vs. False 64 tag = get_tags() if len(tag) >

    0: print "go tag" else: print "no tag" tag = get_tags() if tag: print "go tag" else: print "no tag" name = get_name() if len(str) > 0: print “name” else: print “input name” name = get_name() if str: print “name” else: print “input name” 좀더 간결하게 쓸 수 있다. 근데 더 큰 문제가 있다면?
  40. True vs. False 65 tag = get_tags() if len(tag) >

    0: print "go tag" else: print "no tag" name = get_name() if len(str) > 0: print “name” else: print “input name” None 이 넘어온다면? Traceback (most recent call last): File "C:\workspace\test.py", line 3, in <module> if len(name) >0: TypeError: object of type 'NoneType' has no len()
  41. True vs. False 66 문제 없음. None 인경우도 false 이기

    때문에, 모두 커버 tag = get_tags() if tag: print "go tag" else: print "no tag" name = get_name() if str: print “name” else: print “input name” None 이 넘어온다면?
  42. and, or 68 &&, || 는 없습니다. 대신 and/or를 사용하시면

    됩니다. name = 'a' if len(name) > 0 && name =='a': print name name = 'a' if len(name) > 0 and name =='a': print name
  43. not 69 ~가 아니면 의 의미 name = 'a' if

    not name=='b': print name not 이 앞에 온다는 것에 주의
  44. in 70 그 안에 있냐? 라는 의미 person = {'name':'ash84',

    'age':21} if 'name' in person: print person['name' person = ['name', 'age'] if 'name' in person: print person 그 안에 없냐? not in person = "ash84" if 'ash' in person: print person dict 안에서 key가 있는지 확인 list 안에 해당 값이 있는지 확인 문자열 안에 해당 값이 포함되어 있는지 확인
  45. 예외처리 72 기본 스타일 try { … } catch(Exception e)

    {… } finally { … } @C# try: ... except Exception, e: ... finally: ... @Python 비슷함. catch => except 에러 발생시키기 throw => raise def fly(self): raise NotImplementedError
  46. 예외처리 73 여러 개 걸리게 하기 try: ... except ZeroDivisionError:

    … except BufferError: …. except OverflowError: …. ... finally: ... try: ... except ZeroDivisionError, OverflowError : ... finally: ...
  47. 정리 75 변수는 할당(=)을 해야 생성된다. 전역변수는 global list, dict

    만 기억하자. tuple은 변하지 않는것들. 클로저는 관련된 것들을 묶는다 라고 생각하자. lambda 와 리스트 내포는 코드를 줄여준다. if 문에서 False 의 경우를 기억하고 활용하자. 예외처리는 try-except-finally 쓰고 시작하자.