Immutable (정수 , 실수 문자열 , 튜플) VS Mutable (리스트 , 딕셔너리 , 집합 )
b = [1, 2, 3]
def test_(b):
b = b.append(4)
test_(b)
print(b)
리스트 , 딕셔너리 , 집합
글로벌 변수와 지역 변수가 별개의 존재인건 같은데
같은 주소를 보고 있고 해당 주소에 있는 값들이 변경 되고 있기 때문에
조회를 하면 변경된 값을 볼 수 있다.
클래스 ,모듈 ,패키지 ,예외처리 ,내장함수 외장함수
클래스가 무엇이냐 ?
예를 들면 두개의 계산기가 따로 계산을 해야한다면 ?
다른 계산기로 다른 계산값이 나와야 한다.
class Calculator:
def __init__(self):
self.result = 0
def __add__(self, num):
self.result += num
return self.result
cal1 = Calculator()
cal2 = Calculator()
print(cal1.__add__(3))
print(cal1.__add__(4))
print(cal2.__add__(3))
print(cal2.__add__(7))
여기서 self 란 ?
class FourCal:
def setdata(self, first, scond):
self.first = first
self.scond = scond
a = FourCal()
a.setdata(5, 6)
print(a.first)
print(a.scond)
class FourCal:
def setdata(self, first, scond):
self.first = first
self.scond = scond
print(self)
def add(self):
result = self.first + self.scond
return result
a = FourCal()
a.setdata(5, 6)
print(a.first)
print(a.scond)
print(a.add())
__init__ 생성자에 대해서 이해 하셨나요 ?
클래스가 작성 되자마자 실행되는 코드입니다.
class FourCal:
def __init__(self, first, scond):
self.first = first
self.scond = scond
def add(self):
result = self.first + self.scond
return result
a = FourCal(5, 6)
print(a.add())
#상속
class FourCal:
def __init__(self, first, scond):
self.first = first
self.scond = scond
def add(self):
result = self.first + self.scond
return result
# 상속
class MoreFourCla(FourCal):
def pow(self):
result = self.first**self.scond
return result
a = MoreFourCla(5, 6)
print(a.pow())
# 상속해서 부모 함수 변경
class FourCal:
def __init__(self, first, scond):
self.first = first
self.scond = scond
def add(self):
result = self.first + self.scond
return result
# 상속
class MoreFourCla(FourCal):
def pow(self):
result = self.first**self.scond
return result
class SafeFourCla(FourCal):
def add(self):
result = self.first + self.scond
return str(result) + " re-build"
a = MoreFourCla(5, 6)
b = SafeFourCla(7, 8)
print(b.add())
>>>
15 re-build
자식 함수가 부모 함수를 덮어 쓴다 : 오버 라이딩
#모듈이란 ?
미리만들어 놓은 py 파일
from mod1 import add
class FourCal:
def __init__(self, first, scond):
self.first = first
self.scond = scond
def add(self):
result = self.first + self.scond
return result
a = FourCal(5, 6)
print(a.add())
print(add(5, 6))
mod1.py
# mode1
def add(a, b):
result = a+b
return result
def sub(a, b):
result = a-b
return result
if __name__ == "__main__":
print(add(1, 5))
print(sub(1, 5))
"__main__" 메인 파일의 위치에서 실행 되어야 코드가 작동하고
import 된 정보에 대해서는 실행 되지 않는다
패키지란 ? :모듈 여러개
일단 import 로 가져와서 함수를 쓰면 된다 !
try : 오류가 발생할 수 있는 구문
except Exceptopn as e : 오류발생
else : 오류 발생하지 않음
finally : 조건 마지막에 실행
try:
4/0
except ZeroDivisionError as e:
print(e)
print("HI")
>>>
division by zero
HI
원래 에러가 발생하면 다음 코드 진행이 안되는데
위 코드를 작성하면 HI 코드 까지 잘 실행 되는 걸 볼 수 있다.
else 사용법 : 코드가 에러 안나고 문제 없으면 실행해주는 코드 !
try:
f = open("none", "r")
except FileNotFoundError as e:
print(str(e))
else:
print("HI")
data = f.read()
print(data)
f.close()
finally 사용법 : 조건 마지막에 무조건 실행 에러 여부 상관 없이
f = open('foo.txt', 'w')
try:
data = f.read()
print(data)
except Exception as e:
print(e)
finally:
f.close()
퀴즈 !!
왜 이런 값이 나오고 이런 값이 나올 수 있는 지유를 설명해보세요
class Bird:
def fly(self):
raise NotImplementedError
class Eagle(Bird):
def fly(self):
print("very fast")
eagle = Eagle()
eagle.fly()
>>>
very fast
답 : 상속을 받을때 부모가 뭐가 선언 되어있던 자식에서 다시 선언되면 자식이 이기는 부분이고
그래서 일부러 에러가 일어나도록 코드를 짜 놓았는데 페스 되어 넘어 간다
내장 함수 외장 함수
내장 함수 : 기본적으로 파이썬에 생성되어 있는 함수 pirnt ()
개인적으로 내장함수는 그때그때 찾아서 쓰면 좋다
중요 일단 filter는 연습해보자
def positive(x):
return x > 0
a = list(filter(positive, [1, -3, 2, 0, -5, 6]))
print(a)
>>>
[1, 2, 6]
map , zip
외장함수 : 라이브러리 함수
sys , pickle , time , sleep ,random , webbrowser
import webbrowser
webbrowser.open('https://smart-factory-lee-joon-ho.tistory.com/')
'Python' 카테고리의 다른 글
PYTHON - 프로그래머스 스쿨 문제 : 마라탕 (0) | 2023.04.06 |
---|---|
PYTHON 문법 파이썬 정규표현식이 헷갈리면 이렇게 사용해 봅시다 (0) | 2023.04.03 |
PYTHON 특징 설치 기초 문법 - 숫자형, 문자열, List (0) | 2023.03.23 |
PYTHON - 프로그래머스 스쿨 문제 : 각도기 (0) | 2023.03.12 |
PYTHON - 프로그래머스 스쿨 문제 : 짝수의 합 (0) | 2023.03.08 |
VScode PyGame 설치 방법, 틀 형성 코드 및 Linting 설정 (0) | 2023.02.22 |