SlideShare a Scribd company logo
1 of 45
Python study

      Ahn seong hyun
table of contents


1.   파이썬 개요 및 설치

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.py

def div(a):
     print u"Result :",a/2
num = input("input any number:")
div(int(num))


seonghyeon-an-ui-MacBook-Pro:~ seonghyeonan$ /usr/bin/2to3 -w test.py
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: 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')
   b'a'
   >>> 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 a
True
>>> 2 in b
True
>>> 3 in c
True
>>> 5 in c
False
사전                                                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)



cherry
apple
Banana




값 가져오기(values())

>>> for a in colors.values():
       print(a)



red
green
yellow
사전                                                 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, 를 차례로 호출 할 수가
    있다.

-   메모리 절약이 가능하다. 미리 데이터를 만들어 놓을 필요없이 생성이 가능함.

More Related Content

What's hot

파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301Yong Joon Moon
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Leonardo YongUk Kim
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Yong Joon Moon
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기Yong Joon Moon
 
엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612Yong Joon Moon
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법SeongHyun Ahn
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기Kim Hunmin
 
파이썬+데이터+구조+이해하기 20160311
파이썬+데이터+구조+이해하기 20160311파이썬+데이터+구조+이해하기 20160311
파이썬+데이터+구조+이해하기 20160311Yong Joon Moon
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)Tae Young Lee
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)NAVER D2
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리Booseol Shin
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oopYoung-Beom Rhee
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지SeongHyun Ahn
 

What's hot (20)

파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301파이썬+Json+이해하기 20160301
파이썬+Json+이해하기 20160301
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기
 
엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612엘라스틱서치 이해하기 20160612
엘라스틱서치 이해하기 20160612
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
강의자료4
강의자료4강의자료4
강의자료4
 
iOS 메모리관리
iOS 메모리관리iOS 메모리관리
iOS 메모리관리
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기
 
파이썬+데이터+구조+이해하기 20160311
파이썬+데이터+구조+이해하기 20160311파이썬+데이터+구조+이해하기 20160311
파이썬+데이터+구조+이해하기 20160311
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)[devil's camp] - 알고리즘 대회와 STL (박인서)
[devil's camp] - 알고리즘 대회와 STL (박인서)
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리
 
프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop프론트엔드스터디 E05 js closure oop
프론트엔드스터디 E05 js closure oop
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지
 

Viewers also liked

파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)민지 김
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초 Yong Joon Moon
 
한양대학교 철학과 파이썬 스터디: 코딩 파이썬
한양대학교 철학과 파이썬 스터디: 코딩 파이썬한양대학교 철학과 파이썬 스터디: 코딩 파이썬
한양대학교 철학과 파이썬 스터디: 코딩 파이썬Yeongho Kim
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815Yong Joon Moon
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
프로그래밍 발전구조도
프로그래밍 발전구조도프로그래밍 발전구조도
프로그래밍 발전구조도성주 이
 
SolidWorks Model : SW2015X-A03
SolidWorks Model : SW2015X-A03SolidWorks Model : SW2015X-A03
SolidWorks Model : SW2015X-A03Taehwan Kim
 
Pycon APAC 2016 후기
Pycon APAC 2016 후기Pycon APAC 2016 후기
Pycon APAC 2016 후기SeongHyun Ahn
 
나도 코딩 공부 시작하고 싶다! (웹/파이썬)
나도 코딩 공부 시작하고 싶다! (웹/파이썬)나도 코딩 공부 시작하고 싶다! (웹/파이썬)
나도 코딩 공부 시작하고 싶다! (웹/파이썬)FAST CAMPUS
 
파이썬 라이브러리로 쉽게 시작하는 데이터 분석
파이썬 라이브러리로 쉽게 시작하는 데이터 분석파이썬 라이브러리로 쉽게 시작하는 데이터 분석
파이썬 라이브러리로 쉽게 시작하는 데이터 분석Heekyung Yoon
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개Jin wook
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편Yong Joon Moon
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편Yong Joon Moon
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수Yeon Soo Kim
 
Python+numpy pandas 4편
Python+numpy pandas 4편Python+numpy pandas 4편
Python+numpy pandas 4편Yong Joon Moon
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편Yong Joon Moon
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 

Viewers also liked (20)

파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)파이썬 튜토리얼 (Python tutorial)
파이썬 튜토리얼 (Python tutorial)
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
 
한양대학교 철학과 파이썬 스터디: 코딩 파이썬
한양대학교 철학과 파이썬 스터디: 코딩 파이썬한양대학교 철학과 파이썬 스터디: 코딩 파이썬
한양대학교 철학과 파이썬 스터디: 코딩 파이썬
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
프로그래밍 발전구조도
프로그래밍 발전구조도프로그래밍 발전구조도
프로그래밍 발전구조도
 
Light Tutorial Python
Light Tutorial PythonLight Tutorial Python
Light Tutorial Python
 
Lexical bundles
Lexical bundlesLexical bundles
Lexical bundles
 
SolidWorks Model : SW2015X-A03
SolidWorks Model : SW2015X-A03SolidWorks Model : SW2015X-A03
SolidWorks Model : SW2015X-A03
 
Pycon APAC 2016 후기
Pycon APAC 2016 후기Pycon APAC 2016 후기
Pycon APAC 2016 후기
 
나도 코딩 공부 시작하고 싶다! (웹/파이썬)
나도 코딩 공부 시작하고 싶다! (웹/파이썬)나도 코딩 공부 시작하고 싶다! (웹/파이썬)
나도 코딩 공부 시작하고 싶다! (웹/파이썬)
 
파이썬 라이브러리로 쉽게 시작하는 데이터 분석
파이썬 라이브러리로 쉽게 시작하는 데이터 분석파이썬 라이브러리로 쉽게 시작하는 데이터 분석
파이썬 라이브러리로 쉽게 시작하는 데이터 분석
 
파이썬(Python) 소개
파이썬(Python) 소개파이썬(Python) 소개
파이썬(Python) 소개
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수
 
Python+numpy pandas 4편
Python+numpy pandas 4편Python+numpy pandas 4편
Python+numpy pandas 4편
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 

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

Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summaryHoChul Shin
 
Character Encoding in python
Character Encoding in pythonCharacter Encoding in python
Character Encoding in pythondaesung7kang
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) Tae Young Lee
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Insuk (Chris) Cho
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
Python datatype
Python datatypePython datatype
Python datatype건희 김
 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2Wooseok Seo
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기지수 윤
 
Python programming for Bioinformatics
Python programming for BioinformaticsPython programming for Bioinformatics
Python programming for BioinformaticsHyungyong Kim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산S.O.P.T - Shout Our Passion Together
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for testKyunghoon Kim
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의Kwangyoun Jung
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Circulus
 

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

파이선 실전공략-1
파이선 실전공략-1파이선 실전공략-1
파이선 실전공략-1
 
Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
 
Character Encoding in python
Character Encoding in pythonCharacter Encoding in python
Character Encoding in python
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
Nlp study1
Nlp study1Nlp study1
Nlp study1
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
강의자료 2
강의자료 2강의자료 2
강의자료 2
 
Python datatype
Python datatypePython datatype
Python datatype
 
Windows Debugging Technique #2
Windows Debugging Technique #2Windows Debugging Technique #2
Windows Debugging Technique #2
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
 
Python programming for Bioinformatics
Python programming for BioinformaticsPython programming for Bioinformatics
Python programming for Bioinformatics
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for test
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 

More from SeongHyun Ahn

MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 SeongHyun Ahn
 
github : 유용한 기능들
github : 유용한 기능들 github : 유용한 기능들
github : 유용한 기능들 SeongHyun Ahn
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 SeongHyun Ahn
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 SeongHyun Ahn
 
파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 SeongHyun Ahn
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄SeongHyun Ahn
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄SeongHyun Ahn
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리SeongHyun Ahn
 
실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARDSeongHyun Ahn
 
Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606SeongHyun Ahn
 
디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴SeongHyun Ahn
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장SeongHyun Ahn
 

More from SeongHyun Ahn (15)

MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선
 
github : 유용한 기능들
github : 유용한 기능들 github : 유용한 기능들
github : 유용한 기능들
 
카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스 카피캣으로 시작하는 오픈소스
카피캣으로 시작하는 오픈소스
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄
 
파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD
 
Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606
 
디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 

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

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

Editor's Notes

  1. A+bi 에서 b가 0인것은 실수A가 0인것을 허수 켤레복소수 : 허수부분의부호를바꾼것.
  2. 변경가능한것과변경불가능한것들조사를해서