- 파이썬 날개 달기
- 클래스
- 모듈
- 패키지
- 예외처리
- 내장 함수- X의 절댓값을 돌려주는 함수
- 자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False
- x 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False
- 아스키(ASCII) 코드값 입력받아 그 코드에 해당하는 문자를 출력
- 객체가 자체적으로 가지고 있는 변수나 함수를 보여 줌
- a를 b로 나눈 몫과 나머지
- 열거하다/ 순서가 있는 자료형(리스트,튜플,문자열)을 입력으로 받아 인덱스 값을 포함하는 이 객체로 돌려줌
- 참 걸러내기
- 16진수
- 고유 주소 값
- 사용자 입력을 받는 함수
- 정수 형태로 돌려주는 함수
- 그 클래스의 인스턴스인지를 참, 거짓 구별
- 함수(f)와 반복 가능한(iterable) 자료형을 입력
- 반복 가능한 자료형을 입력받아 최댓값 출력
- 8진수
- 문자 아스키 코드 값을 돌려주는 함수
- x의 y 제곱한 결괏값
- 인수 3개 range
- 반올림
- 문자열 형태로 객체를 변환
- 리스트나 튜플의 모든 요소의 합
- 반복 가능한 자료형을 입력받아 튜플 형태
- 자료형이 무엇인지 알려 주는 함수
- 동일한 개수로 이루어진 자료형을 묶음
 
파이썬 날개 달기
- 파이썬 날개 달기
- 클래스
- 모듈
- 패키지
- 예외처리
- 무언가를 수행한다.
- 내장 함수 - 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))
7from 모듈 이름 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 ... finallytry문 수행 도중 예외 발생 여부에 상관없이 항상 수행 
보통 리소스를 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])
Falsex 중 하나라도 참이 있으면 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
38진수
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)]