• Home
  • About
    • Yerim Oh photo

      Yerim Oh

      Happy and worthwhile day by day :)

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

[06] Python

23 Jun 2020

Reading time ~7 minutes

Table of Contents
  • 파이썬 날개 달기
  • 클래스
    • 정의
    • 사칙연산 클래스
    • 클래스 구조 만들기
    • 생성자(Constructor)
    • 클래스의 상속
    • 메서드 오버라이딩
    • 클래스 변수
  • 모듈
    • 모듈 불러오기
    • if name == “main”: 의 의미
    • 클래스나 변수 등을 포함한 모듈
    • 다른 파일에서 모듈 불러오기
  • 패키지
    • 패키지 출력
    • relative 패키지
  • 예외처리
    • 오류 예외 처리 기법
    • 오류 회피
    • 오류 일부로 발생시키기
    • 예외 만들기
  • 내장 함수
    • X의 절댓값을 돌려주는 함수
    • 자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False
    • x 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False
    • 아스키(ASCII) 코드값 입력받아 그 코드에 해당하는 문자를 출력
    • 객체가 자체적으로 가지고 있는 변수나 함수를 보여 줌
    • a를 b로 나눈 몫과 나머지
    • 열거하다/ 순서가 있는 자료형(리스트,튜플,문자열)을 입력으로 받아 인덱스 값을 포함하는 이 객체로 돌려줌
    • 참 걸러내기
    • 16진수
    • 고유 주소 값
    • 사용자 입력을 받는 함수
    • 정수 형태로 돌려주는 함수
    • 그 클래스의 인스턴스인지를 참, 거짓 구별
    • 함수(f)와 반복 가능한(iterable) 자료형을 입력
    • 반복 가능한 자료형을 입력받아 최댓값 출력
    • 8진수
    • 문자 아스키 코드 값을 돌려주는 함수
    • x의 y 제곱한 결괏값
    • 인수 3개 range
    • 반올림
    • 문자열 형태로 객체를 변환
    • 리스트나 튜플의 모든 요소의 합
    • 반복 가능한 자료형을 입력받아 튜플 형태
    • 자료형이 무엇인지 알려 주는 함수
    • 동일한 개수로 이루어진 자료형을 묶음

파이썬 날개 달기

  • 파이썬 날개 달기
  • 클래스
    • 정의
    • 사칙연산 클래스
    • 클래스 구조 만들기
    • 생성자(Constructor)
    • 클래스의 상속
    • 메서드 오버라이딩
    • 클래스 변수
  • 모듈
    • 모듈 불러오기
    • if name == “main”: 의 의미
    • 클래스나 변수 등을 포함한 모듈
    • 다른 파일에서 모듈 불러오기
  • 패키지
    • 패키지 출력
    • relative 패키지
  • 예외처리
    • 오류 예외 처리 기법
  • 무언가를 수행한다.
    • 오류 회피
    • 오류 일부로 발생시키기
    • 예외 만들기
  • 내장 함수
    • X의 절댓값을 돌려주는 함수
    • 자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False
    • x 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False
    • 아스키(ASCII) 코드값 입력받아 그 코드에 해당하는 문자를 출력
    • 객체가 자체적으로 가지고 있는 변수나 함수를 보여 줌
    • a를 b로 나눈 몫과 나머지
    • 열거하다/ 순서가 있는 자료형(리스트,튜플,문자열)을 입력으로 받아 인덱스 값을 포함하는 이 객체로 돌려줌
    • 참 걸러내기
    • 16진수
    • 고유 주소 값
    • 사용자 입력을 받는 함수
    • 정수 형태로 돌려주는 함수
    • 그 클래스의 인스턴스인지를 참, 거짓 구별
    • 함수(f)와 반복 가능한(iterable) 자료형을 입력
    • 반복 가능한 자료형을 입력받아 최댓값 출력
    • 8진수
    • 문자 아스키 코드 값을 돌려주는 함수
    • x의 y 제곱한 결괏값
    • 인수 3개 range
    • 반올림
    • 문자열 형태로 객체를 변환
    • 리스트나 튜플의 모든 요소의 합
    • 반복 가능한 자료형을 입력받아 튜플 형태
    • 자료형이 무엇인지 알려 주는 함수
    • 동일한 개수로 이루어진 자료형을 묶음

클래스

정의


반복되는 변수, 메서드를 위해 기본 틀을 만들어 놓음
클래스: 틀 객체: 클래스로 만들어 낸 피조물
a = Cookie() 이렇게 만든 a는 객체
a 객체는 Cookie의 인스턴스
메서드: 클래스 안 구현된 함수
self= 클래스 이름(second. thrid) ->정의
self.하위함수() ->활용

class Calculator: -> 클래스 이름 대문자
     def __init__(self):
         self.result = 0
     def add(self, num):
         self.result += num
         return self.result
cal1 = Calculator()
cal2 = Calculator()

사칙연산 클래스


사칙연산 클래스 : FourCal
두 숫자를 입력받기 : setdata 메서드
나누기 기능 : div 메서드
더하기 기능 : add 메서드
빼기 기능 : sub 메서드
곱하기 기능 : mul 메서드

>>> a = FourCal(  ) -> a 객체 만들기
>>> a.setdata(4, 2)
>>> print(a.add(  ))
6

클래스 구조 만들기

>>> class FourCal:
...     pass
...      
>>> a = FourCal(  )
>>> type(a)
<class '__main__.FourCal'>


Pass: 아무것도 수행하지 않는 문법으로 임시코드 작성에 유용
type : 파이썬 내장 함수로 객체 타입을 출력

>>> class FourCal:
...     def setdata(self, first, second):-> 메서드의 매개변수
...         self.first = first            -> 메서드의 수행문
...         self.second = second          -> 메서드의 수행문
...     
>>> a = FourCal()
>>>a.setdata(4, 2)
>>> print(a.first)
4


setdata 메서드는 매개변수로 self, first, second 3개 입력값받음
self 생성되는 객체

+더하기 기능 만들기

>>> a = FourCal(  )
>>> a.setdata(4, 2)
>>> print(a.add(  ))
6
>>> class FourCal:
...     def setdata(self, first, second):
...         self.first = first
...         self.second = second
...     def add(self):
...         result = self.first + self.second
...         return result
...     def div(self):
...         result = self.first / self.second
...         return result
...
>>> a = FourCal(  )  ->클래스 사용
>>> b = FourCal(  )
>>> a.setdata(4, 2)
>>> b.setdata(3, 8)
>>> print(a.add(  )) 
6
>>> b.add(  )
11
>>> a.div(  )
2

생성자(Constructor)

객체에 초깃값을 설정 필요할 떄 생성자 구현
파이썬 메서드 이름으로 init

>>> class FourCal:
...     def __init__(self, first, second):
...         self.first = first
...         self.second = second
...     def setdata(self, first, second):
...         self.first = first
...         self.second = second
>>> a = FourCal()  ->오류
>>> a = FourCal(4, 2) -> 정상

_init__ 메서드는 setdata 메서드와 이름만 빼고 다 동일
But, _init__은 객체가 생성되는 시점에 자동으로 호출

클래스의 상속

class 클래스 이름(상속할 클래스 이름):
객체변수는 다른 객체들에 영향받지 않고 독립적으로 그 값을 유지

메서드 오버라이딩

부모 클래스(상속한 클래스)에 있는 메서드를 동일한 이름으로 다시 만드는 것 -> 자식이 이김

클래스 변수

>>> class Family:
...     lastname = "김"
...
>>> print(Family.lastname)
김

클래스 변수 값을 변경했더니 클래스로 만든 객체의 lastname 값도 모두 변경된다는 것을 확 인할 수 있다.
즉 클래스 변수는 클래스로 만든 모든 객체에 공유된다는 특징이 있다.


모듈

뜻: 함수나 변수 또는 클래스를 모아 놓은 파일
다른 파이썬 프로그램에서 불러와 사용하게 만든 파이썬 파일

모듈 불러오기

#mod1.py
def add(a, b):
return a + b
import 모듈 이름
print(모듈이름.모듈안함수(변수))

>>> import mod1
>>> print(mod1.add(3, 4))
7

from 모듈 이름 import 모듈 함수
모듈함수가 2개 이상일 떄

from mod1 import add, sub
from mod1 import *

if name == “main”: 의 의미

바로 출력 방지

#mod1.py 
def add(a, b): 
     return a+b
def sub(a, b): 
    return a-b
if __name__ == "__main__":
    print(add(1, 4))
      print(sub(4, 2))

클래스나 변수 등을 포함한 모듈

a= 모듈이름.클래스이름()
print(a.클래스안함수(변수))
모듈 안에 있는 클래스를 사용하려면 ‘.’(도트 연산자)로 클래스 이름 앞에 모듈 이름을 먼저 입력

다른 파일에서 모듈 불러오기

1.동일한 디렉터리에 있어야 한다
2.동일하지 않을 때
> 새 디렉터리 생성, 이동

  C:\Users\pahkey>cd C:\doit
  C:\doit>mkdir mymod   ->새 디렉터리 생성
  C:\doit>move mod2.py mymod  -> 지정한 디렉터리로 파일 이동
1개 파일을 이동했습니다. 
+sys.path.append(모듈을 저장한 디렉터리) 사용하기

패키지

도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리하게 해줌
A.B -> A패키지 안 B 모듈

패키지 출력

Import 상위.중위.하위
-> (.)를 사용해서 import할 때 가장 마지막 항목 반드시 모듈 또는 패키지
4. render.py 파일은 다음과 같이 만든다.

relative 패키지

from ..sound.echo import echo_test ->상위 폴더로가서 찾기


예외처리

오류 예외 처리 기법

try, except문
기본구조

try: 
    …
except [발생 오류[as 오류 메시지 변수]]:
    …

1.try, except만 쓰는 방법
모든 오류에 except 블록을 수행

try: 
    …
except:
    …

2.발생 오류만 포함한 except문

try: 
    …
except 발생 오류:
    …

3.발생 오류와 오류 메시지 변수까지 포함한 except문
오류메세지 뜨고 계속 실행 (정지 아님)

try: 
    …
except 발생 오류 as 오류 메시지변수:
    …
try ... finally

try문 수행 도중 예외 발생 여부에 상관없이 항상 수행
보통 리소스를 close해야 할 때에 많이 사용

f = open('foo.txt', 'w')
try:
    # 무언가를 수행한다.
finally:
    f.close(  )

여러 개의 오류 처리

try:
    ...
except 발생 오류 1:
     ... 
except 발생 오류 2:
    ...

오류 회피

try:
    f = open("나없는파일", 'r')
except FileNotFoundError:
    pass

오류 일부로 발생시키기

raise 명령어를 사용

class Bird:
    def fly(self):
        raise NotImplementedError


상속 클래스에서 반드시 fly함수 구현
+NotImplementedError는 파이썬 내장 오류로, 꼭 작성해야 하는 부분이 구현되지 않았을 경우 발생

예외 만들기

이 파이썬 내장 클래스인 Exception 클래스 상속

class MyError(Exception):
    pass

def say_nick(nick):
    if nick == '바보':
        raise MyError()
    print(nick)

예외처리기법 사용

try:
    say_nick("천사")
    say_nick("바보")
except MyError:
    print("허용되지 않는 별명입니다.")

오류 메시지를 출력했을 때 오류 메시지가 보이게__str__ 메서드 사용
: print(e)처럼 오류 메시지를 print문으로 출력할 경우에 호출되는 메서드이다

Try:
     say_nick("천사")
     say_nick("바보")
except MyError as e:
     print(e)   ->X
class MyError(Exception):
    def __str__(self):
        return "허용되지 않는 별명입니다."

내장 함수

X의 절댓값을 돌려주는 함수

abs(x)

자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False

>>> all([1, 2, 3, 0])
False

x 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False

>>> any([1, 2, 3, 0])
True

아스키(ASCII) 코드값 입력받아 그 코드에 해당하는 문자를 출력

>>> chr(97) 
'a'  #아스키 코드 97은 소문자 a

객체가 자체적으로 가지고 있는 변수나 함수를 보여 줌

>>> dir([1, 2, 3]) ->리스트로 쓸 수 있는 함수
['append', 'count', 'extend', 'index', 'insert', 'pop',...]

a를 b로 나눈 몫과 나머지

>>> divmod(7, 3)
(2, 1) #->7 나누기 3의 몫은 2, 나머지는 1(튜플 형태)

열거하다/ 순서가 있는 자료형(리스트,튜플,문자열)을 입력으로 받아 인덱스 값을 포함하는 이 객체로 돌려줌

>>> for i, name in enumerate(['body', 'foo', 'bar']):
...     print(i, name)
...
0 body
1 foo
2 bar
> 실행 가능한 문자열)을 입력으로 받아 문자열을 실행한 결괏값
>>> eval("'hi' + 'a'") 
'hia' 
>>> eval('divmod(4, 3)') 
(1, 1)

참 걸러내기

filter(함수이름, 함수요소)

#filter1.py 
def positive(x): 
    return x > 0
print(list(filter(positive, [1, -3, 2, 0, -5, 6])))
>>> list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6]))

16진수

hex(정수값)

고유 주소 값

id(object)

사용자 입력을 받는 함수

a = input( )

정수 형태로 돌려주는 함수

Int

그 클래스의 인스턴스인지를 참, 거짓 구별

isinstance(인스턴트,클래스이름)

>>> class Person: pass 
... 
>>> a = Person(  ) 
>>> isinstance(a, Person) 
True 

함수(f)와 반복 가능한(iterable) 자료형을 입력

Iterable을 f로 반복해서 돌려줌

map( f, iterable)
>>> def two_times(x): return x*2 
...
>>> list(map(two_times, [1, 2, 3, 4]))
[2, 4, 6, 8]
>>> list(map(lambda a: a*2, [1, 2, 3, 4]))
[2, 4, 6, 8]

반복 가능한 자료형을 입력받아 최댓값 출력

>>> max([1, 2, 3]) ->반대는 min
3

8진수

oct (x)

문자 아스키 코드 값을 돌려주는 함수

ord(‘a’)

x의 y 제곱한 결괏값

pow(x, y)

인수 3개 range

>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]  -> 문자 사이의 거리

반올림

round(number[, ndigits],소수점 자리 숫자(안써도 됨))

문자열 형태로 객체를 변환

str(object)

리스트나 튜플의 모든 요소의 합

sum(iterable)

반복 가능한 자료형을 입력받아 튜플 형태

tuple( iterable)

자료형이 무엇인지 알려 주는 함수

type(object)
>>> type("abc")
<class 'str'>

동일한 개수로 이루어진 자료형을 묶음

zip(iterable)
>>> list(zip([1, 2, 3], [4, 5, 6]))
[(1, 4), (2, 5), (3, 6)]


PythonBasic Share Tweet +1