기초 물방울/Python

파이썬 클래스~모듈~예외처리~내장&외장함수 #5

Weeding 2022. 7. 10. 23:20
반응형
SMALL

클래스

  • 반복되는 변수 & 매서드(함수)를 미리 정해놓은 틀(설계도)
  • 예를 들어서, '과자 틀(클래스)' 이라고 생각하면 됨. 여러개의 과자(객체)를 과자틀로 찍어내는것!
  • 1. Class를 입력하고
  • 2. 대문자로 시작하는 클래스의 이름을 작성
  • 3. 안에 들어갈 함수와 변수 설정

__init__ -> 처음에 클래스가 만들어질 때 어떤 값을 설정할지 설정을 해주는 부분

 

 

 

사칙연산 클래스1

a 라는 변수에 설계도로 찍어낸 결과물

 

 

사칙연산 클래스 2

class 안에 있는 함수를 메서드라고 부름, // a = self , 1 = first, 2 = second

 

1,2 가 출력되는걸 볼 수 있음. // a.first, second 변수가 setdata 안에 들어감

 

 

 

 

사칙연산 클래스3

 

 

 

생성자(Constructor)

__init__ ---> class로 instace를 찍어낼 때 init을 실행하면서 실행!

 

 

 

상속

  • 계산기 -> 공학용 계산기로 업그레이드 (추가기능만 넣음)
  • 부모클래스가 있으면 이 설계도를 활용해서 다른 계산기가 상속받아서 만듬
  • 자식에게도 init 함수가 동일하게 적용됨.
  • init은 모든 클래스마다 한번만 써주면 됨!

Class MoreFourCal(FourCal): pass  --> 부모가 만든거는 자식이 상속받으면 다 똑같이 쓸 수 있음! -> 기존 클래스를 활용하기 위함!!

 

 

 

 

클래스의 상속 (메서드 추가)

제곱

 

 

 

메서드 오버라이딩 (변형)

자식 클래스는 변형도 가능함! 4 / 2 = 2.0이 나오게됨

 

0으로 바꿔주고 출력해봤더니 0이 나오게 됨. 즉, 자식 클래스가 부모를 이기게 됨 = "오버라이딩" = 덮어쓴다

 

 

 

 

클래스 변수, 객체 변수 (차이)

설계도 자체가 '박'으로 바뀌었기 때문에 찍어내는 a,b도 이름이 바뀌어서 lastname이 '박'으로 나오게 됨!

 

 

모듈이란?

  • 미리 만들어 놓은 .py 파일 (함수, 변수, 클래스)
  • 이것을 그냥 가져다가 쓰겠다라는 것

 

mod1 파일을 만들어놓고

 

 

다른곳에서 import로 가져다가 쓸 수 있음.

 

 

 

그리고 이런식으로 함수가 여러개 있다라고 했을 때, 골라서 가져오고 싶으면!

 

from mod1 import add   이런식으로 골라서 가져올 수 있음!

 

 

 

 

 

모듈

  • if __name__ == "__main__"  의 의미

 

import만 했는데 5,6이 나왔네?  --> print 찍어놓은걸 써놧기 때문에 불러오면서 실행까지 되버림.

 

 

이러한 현상을 방지하기 위해 if __name__== "__main__":  을 사용함.  --> 사용 후 안나오는 모습

 

file이 main과 일치하기 때문에 5,6이 뜨지만 ,  가져오는 곳에서는 파일 이름이 나오게 됨!

 

 

 

 

모듈

  • sys.path.append
  • 같은 폴더가 아닌 서브 폴더나 다른곳에 있을 때 사용!

 

 

 


 

패키지 (=라이브러리)

  • 모듈 여러 개 모아놓은 것!
  • 가상의 game 패키지 예를 살펴보자!!

 

 

 

패키지 안의 함수를 살펴보기

game 폴더 graphic, sound 폴더 안에 조건들을 만들고, 패키지안의 함수를 불러오기

 

 

from import를 활용해서도 불러올 수 있음.

 

이런식으로도 불러올 수 있음.

 

 

as를 활용해서도 불러올 수 있음. echo_test 를 e로 쓰겠다~!

 

 

 

 

 

_ _all_ _

따로따로 echo가 나와야하는데 오류나옴.... 체크해야함

 

 

relative 패키지

여기도 echo가 나와야하는데 오류가나~~~~~

 

 

 

예외처리

  • 오류가 발생했을 때 어떻게 할지 정하는 것
  • try:
         #오류가 발생할 수 있는 구문
  • excpt Exception as e:
         #오류 발생
  • else:
         #오류 발생하지 않음
  • finally:
         #무조건 마지막에 실행

 

재생해보면 없는 파일이라는게 없다고 나옴. 뒤에 뭘 쓰려고해도 이런 오류는 처리가 안됨. 그래서 예외처리가 필요함

 

 

4를 0으로 나누면 안된다. 무한대가 나오기 때문. 이런식으로 ZeroDivisionError가 뜨게 됨

 

try except로 오류를 잡아놓음. 이 에러 내용이 e에 담겨서 찍힘

 

그래서 이런식으로 오류가 나도 프로그램이 안꺼지고 잘 실행이 됨.

 

 

else는 if else랑 똑같음. 구문에 오류가 없을때 else를 실행해라. (파일 입력/쓰기)

 

 

오류가 나든 말든 상관없이 무조건 filnally, f.close()를 해줘라! , Exception은 어떤 오류가 날지 모르기에 이걸로 잡음! (오류는 다잡음!)

 

 

 

여러 개의 오류 처리하기

if else랑 똑같음. except로 여러개의 예외처리를 거침

 

 

오류 회피하기

 

 

 

오류 일부러 발생시키기

자식이 이겨서 오류 없이 very fast가 출력됨

 

 

다른 오류 명을 넣으면 오류가 나옴, 이런식으로 에러를 만들 수도 있음.

 

 

 

 

내장함수

  • 파이썬에 기본적으로 포함 하고 있는 함수
  • ex) print(), type()

 

 

abs => 절대값

외울 필요도 없음. 그냥 메뉴얼임

 

 

  • all => 모두 참인지 검사
  • any => 하나라도 참이 있는가
  • chr => ASCII 코드를 입력받아 문자 출력 (0~127사이의 숫자를 각 문자에 대응)
  • divmod => 몫과 나머지를 튜플 형태로 돌려줌
  • enumerate => 열거하다 (list인데 ditctionary 처럼 활용)
  • eval => 실행 후 결과값을 돌려줌
  • id => 주소값
  • input => 사용자 입력 받는 함수
  • int => 문자열을 10진수 정수로 변환
  • len => 길이
  • list => 리스트로 변환
  • max => 최대 값 // min => 최소 값
  • open
    w 쓰기 / r 읽기 / a 추가 / b 바이너리
    ex) f = open("binary_file", "rb")
  • pow => 제곱한 결과값 반환
  • range => 범위
  • round => 반올림
  • sorted => 정렬
  • str => 문자열 반환
  • tuple => 튜플 반환
  • type => 타입을 출력
  • zip => 자료형을 묶어주는 역할

 

dir

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

list에서 뭘 쓸수 있는지 명령어의 모임을 볼 수 있음.

 

 

 

filter

  • 함수를 통과하여 참인 것만 돌려줌

x 가 양수이면 true 아니면 false 분리형 값을 돌려줌. 각각 하나씩 돌면서 true인것만 남기는것. -> filter 내장함수

 

 

 

map

  • 각 요소가 수행한 결과를 돌려줌

다 곱하기 2 해서 돌려줌. lambda의 활용

 

 

 

 

 

외장함수

  • 라이브러리 함수, import 해서 쓰는 것

 

 

sys.argv

sys : 기존에 깔려있는 라이브러리, 그냥 시스템에 있는 argv를 출력해줌

 

 

 

pickle

파일 형태로 저장할수있는데, 딕셔너리같은 파이썬에만 있는 데이터를 pickle을 이용해 dump라는 형태로 저장하게 되면 언제든 사용 가능!!

 

 

 

time

날짜 출력. // 초로 나오게 됨.

 

 

time.sleep

time을 import해와서 씀. time을 1초씩 쉬면서 텀을 주면서 출력이 됨!

 

 

 

random

난수생성, 로또번호 생성 등에 사용

 

 

 

webbrowser

실행하면 웹브라우저를 오픈!!! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
LIST