강사님 강의 자료
https://github.com/kmsclass/ems
예외처리
1. tyr ~ except : try문 수행 중 오류가 발생하면 except 구문 실행된다.
2. 다중예외처리
3.else : 예외 발생없이 정상적인 경우 실행되는 영역
4. raise : 강제로 예외 발생. 강제 발생 후 except로 넘어간다
5. pass : 예약어. 오류 발생시 무시하고, 어떤 구문도 실행되지 않도록 함. 거의 모든 구문에서 사용 가능
클래스와 모듈
- 클래스
- 사용자 정의 자료형
- 추후 자료를 넣기위한 빵틀
- 틀에 맞춰 입력된 자료(=객체, 빵)에 메모리를 할당해줌
- 객체끼리 섞이지않는다
- 모듈
- 기능의 모음
- 응집도는 높이고 결합도는 낮춰라
1 . class
- 기본생성자
__init__(self) : | 생성자를 구현하지 않으면 자동으로 제공되는 생성자 |
pass |
- self : : 자기참조변수 : 자신객체의 멤버를 표현시 사용되는 예약어
- 소멸자 : 생성된 객체들이 제거됨
class Car : # 내가 만든 정보, 메모리 잡아먹지않음. 빵틀일뿐
color =''
speed = 0
def upSpeed(self, value) :
self.speed += value
def downspeed(self, value) :
self.speed -= value
car1 = Car() # 객체화. Car(): 생성자, 멤버변수의 초기화, 객체 생성시 반드시 호출됨
car1.color = '빨강'
car1.speed = 10
car2 = Car() # 객체화
car2.color = '파랑'
car2.speed = 20
car2.upSpeed(30)
print('자동차1의 색상: ',car1.color,'현재속도: ',car1.speed)
print('자동차2의 색상: ',car2.color,'현재속도: ',car2.speed)
#결과
자동차1의 색상: 빨강 현재속도: 10
자동차2의 색상: 파랑 현재속도: 50
# 기본 생성자 : 클래스 내에 생성자가 없는 경우 시스템이 만들어주는 생성자
# 생성자 : __init__
class Car :
color = ''
speed = 0
count = 0
# self : 자기참조변수, 현재 속한 객체(카1인지 카2인지),
def __init__(self,v1,v2) : #생성자, 객체생성에 관여하는 메서드
self.color = v1 # color : 인스턴스 변수 (객체변수)
self.speed = v2 # speed : 인스턴스 변수 (객체변수)
Car.count += 1 # count : 클래스 변수, 객체들의 공유 변수 (클래스명.변수명), 객체에 속하지 않음
def upSpeed(self,value) :
self.speed += value
def downSpeed(self,value) :
self.speed -= value
myCar1 = Car('빨강',10) # V1,V2에 해당하는 arguments(매개변수) 입력
print('자동차1의 색상: ',car1.color,'현재속도: ',car1.speed,'자동차 생산 갯수: ', Car.count)
myCar2 = Car('파랑',20)
print('자동차1의 색상: ',car1.color,'현재속도: ',car1.speed,'자동차 생산 갯수: ', Car.count)
print('자동차2의 색상: ',car2.color,'현재속도: ',car2.speed,'자동차 생산 갯수: ', Car.count)
#결과
자동차1의 색상: 빨강 현재속도: 10 자동차 생산 갯수: 1
자동차1의 색상: 빨강 현재속도: 10 자동차 생산 갯수: 2
자동차2의 색상: 파랑 현재속도: 50 자동차 생산 갯수: 2
- class 상속
class Car :
speed = 0
door = 3
def upSpeed(self,value) :
self.speed += value
print('현재 속도(부모클래스): %d' %self.speed)
class Sedan(Car) : #상속. 자손calss명(부모calss명), 부모클래스 기능 모두 사용 가능
pass
sedan1 = Sedan()
sedan1.speed = 10
sedan1.upSpeed(50)
print('sedan1: ',sedan1.speed,',',sedan1.door)
sedan2 = Sedan()
sedan2.speed = 20
sedan2.door = 4
print('sedan2: ',sedan2.speed,',',sedan2.door)
#결과
현재 속도(부모클래스): 60
sedan1: 60 , 3
sedan2: 20 , 4
- calss에서 사용되는 특별한 메서드
생성자 | __init__(self, ...) |
소멸자 | __del__(self) |
문자열로 변경 | __repr__(self) |
+ | __add__(self,other) |
- | __sub__(self,other) |
< | __lt__(self,other) |
> | __gt__(self,other) |
== | __eq__(self,other) |
- 추상 메서드 : 오버라이딩을 반드시 해야하는 메서드, 자료를 표준화할 때 사용
- 오버라이딩
- 부모calss의 함수를 자손calss에서 재정의 하는 기능
- 부모calss에서 정의된 함수를 자손calss에서 같은 이름, 다른 기능을 가진 함수로 재정의
- 상속받아야 가능하다
class SuperClass :
def method(self) : #추상메서드
raise NotImplemented # 강제 예외 발생
class SubClass1(SuperClass): #자손클래스
# pass
def method(self) : # 부모클래스와 같은 이름의 함수를 다른 기능으로 재정의
print('SubClasss1에서 오버라이딩한 메서드')
sub1 = SubClass1()
sub1.method()
#결과
SubClasss1에서 오버라이딩한 메서드
2. 모듈
# 모듈 가져오기
import mod00 # import
print(mod00.add(10,20))
print(mod00.add(30,20))
# from ~ import 사용하기
from mod00 import add
print(add(10,20))
# sub함수는 가져오지 않았기 때문에 사용시 오류남
# 모듈에서 함수 가져오기
from mod00 import add, sub
print(add(10,20))
print(sub(30,20))
# 간단한 별칭 지정
import mod00 as m
print(m.add(10,20))
print(m.add(30,20))
import math
import sys
print(sys.builtin_module_names)
print(dir(__builtins__)) # dir() : 사용가능한 (제공된) 기능들 조회
print(dir(math))
print(dir(mod00))
정규식
- 주어진 데이터에서 내가 정한 패턴을 찾아 숫자든 문자든 바꿔서 사용 가능
- 패턴을 정규식으로 짠다.
- 문자타입의 숫자도 /d를 사용해 패턴으로 찾기 가능
- sql의 like 확장 버전같은 느낌
정규식에서 사용되는 기호
1. () : 그룹
2. \g<n> : n번째 그룹
3. [] : 문자 1개
[a] : a문자
[a-z] 소문자 1개
[A-Z] : 대문자 1개
[A-Za-z] : 영문자 1개
[A-Za-z]* : 영문자 0개 이상
[A-Za-z]+ : 영문자 1개 이상
[0-9A-Za-z] : 영문자 or 숫자 1개
[0-9] : 숫자 1개. \d 와 같음
4. {n} : 글자의 갯수
ca{2}t
cat : false
caat : True
{n,m} : 글자의 갯수 n개 이상 m개 이하
5. ? : 0 또는 1
* : 0개 이상
+ : 1개 이상
6. \s : 공백
\s* : 공백 0개 이상
\s+ : 공백 1개 이상
# 문제. 점수의 총점과 평균 출력하기
str4 = 'hong:90,lee:80,kim:75,park:50,song:100'
p = re.compile(r'\d{2,3}') # 정규식으로 패턴 지정
scores = re.findall(p, str4) # 데이터에서 패턴 찾기
print(scores)
scores = list(map(int,scores)) # 연산을 위해 숫자 리스트로 변환
print(sum(scores))
print(sum(scores)/len(scores))
# 대소문자 구분없이 re.I
# pattern = re.compile('Th*e', re.I)
파일
1. 파일 선택
open (파일이름, 파일모드, 인코딩방식)
파일 모드
- r : 읽기모드
- w : 쓰기모드, 파일이 존재하지 않는 경우 생성 .파일이 존재하는 경우 내용이 변경 됨
- a : 쓰기모드, append 모드. 파일이 존재하지 않는 경우 생성. 파일이 존재하는 경우 내용이 추가 됨
- t : 텍스트 모드. 기본형
- b : 이진 모드
3일동안 파이썬 기초 휘몰아쳤다
분석할 때 필요한 내용만 들을줄알았는데 생각보다 더 많이 알려주셔서 좋기도 하고 ... 좋다..
예외처리 강의 못들어서 아쉬운 마음
오늘 배운 내용 어떻게 다시 공부하면 좋을지 안떠오르므로
코드깜지 쓰기.. 영타 500 나와라
'환경, 에너지' 카테고리의 다른 글
[EMS] matplotlib, folium (0) | 2024.07.08 |
---|---|
[EMS] Pandas 기본 (0) | 2024.07.03 |
[EMS] Python 기초 (0) | 2024.07.02 |
[EMS] ESS 이해와 사례분석 (0) | 2024.06.28 |
[EMS] EMS 현장설계 및 제어프로그램 (0) | 2024.06.27 |