- 파이썬 날개 달기
- 클래스
- 모듈
- 패키지
- 예외처리
- 내장 함수
- 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))
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)]