Immutable( 변하지 않는 자료형)
(정수, 실수, 문자열, 튜플-변하지 않는다)
a = 1
def vartest(a):
a = a + 1
vartest(a)
print(a)
mutable(변하는 자료형)
(리스트, 딕셔너리, 집합)
b = [1,2,3]
def vartest2(b):
b = b.append(4)
vartest(b)
print(b)
클래스
모듈, 패키지,
예외 처리,
내장 함수, 외장 함수
변수(result) & 메서드(함수)를 미리 정해놓은 틀(설계도)
클래스는 도대체 왜 필요한가?
함수랑 변수가 똑같은 구조를 계속 여러번 써야되니까 이거 는 하나로 묶어서 그냥 설계도로 만들어보자! 해서 만든 것이 class
클래스를 쓰는 방법!
1. Class 입력
2. 대문자로 시작하는 클래스의 이름을 작성
3. 안에 들어갈 함수와 변수 설정
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(cal1.add(3))
print(cal1.add(7))
클래스라는 설계도를 만들고 그거를 똑같은 걸 여러 개 찍어낼 때 사용한다
과자틀 같은 느낌.
과자 틀(클래스)와 이 틀로 찍어 만든 과자(객체)
a가 셀프인 것. npc 설계도? 여러개의 객체들을 만들 때사용.
class FourCal:
def stdata(self, first, second):
self.first = first
self.second = second
a = FourCal()
a. FourCal(1,2)
print(a.first)
print(a.second)
class FourCal:
def stdata(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
a. FourCal()
a.setdata(4,2)
print(a.add())
class FourCal:
def init(self, first, second):
self.first = first
self.second = second
def stdata(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
a = FourCal(1,2)
실행하면서 시작하는 게 init(생성자)이다. 맨 앞에 쓰는 것이 관례이다. 모든 클래스마다 한 번 만 써주면 된다.
class FourCal:
def init(self, first, second):
self.first = first
self.second = second
def stdata(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
class MoreFourCal(FourCal):
pass
a = MoreFourCal(4,2)
print(a.add())
부모가 만든 거는 자식이 상속받으면 다 똑같이 쓸 수 있다.
상속은 기존에 짠 class를 활용하기 위해서 쓴다.
class FourCal:
def init(self, first, second):
self.first = first
self.second = second
def stdata(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
class MoreFourCal(FourCal):
def
부모이기는 자식 없다. 자식 함수가 부모함수를 이긴다. 메서드 오버라이딩 . 부모의 함수를 덮어 씌운다.
공통으로 쓸 때는 클래스 변수를 쓰고
각각 객체마다 다르게 줘야 될 때는 객체 변수를 쓴다.
= 미리 만들어 놓은 .py파일
(함수, 변수, 클래스)
import는 불러오는 것.
model.py 에
def add(a,b):
return a+b
def sub(a,b):
return a+b
import model
print(model.add(1,2))
from model import add
이런식으로 특정함수만 간편하게 불러오기 가능.
같은 폴더에 있으면 import가능. 만약에 하위폴더 안에 있으면 찾을 수가 없다.
sys.path.append 라고 path 해줘야함.
import sys
sys.path.append("c://windows// ~~)
if name=="main"
이런 언더바들은 다 특별한 의미를 가진다.
name의 경우, 현재 그 실행하는 파일이 실행하는 파일이면 메인이라는 게 들어와서 구분지을 수 있다.
조금 헷갈릴 수 있는 개념인데
python mod1.py 명령어를 입력하여 실행시킨다고 하면 시작 지점이 "mod1.py"(현재 그 파일)인 것이고 그때만 name == main이 됩니다.
다른 파일에서 import 하는 방식으로 코드를 작동시키게 되면 name은 다른 것이 되어 main이 되지 않습니다!
=모듈 여러 개 모아놓은 것 = 웹크롤링할 때 필요한 beatifulsoup 같은 것
from game.sound.echo import echo_test as e
e()
as ~로서 e 를 쓰면 축약해서 쓰기 가능
from game.sound.echo import *
echo.echo_test()
(*)를 쓰면 싹다 불러오라는 뜻
모듈들을 다 가져온다.
오류가 발생했을 때 어떻게 할지 정하는 것
try:
#오류가 발생할 수 있는 구문
except Exception as e:
#오류 발생. 오류 잡기. 어떤 오류든 다 잡힌다
else:
#오류 발생하지 않음
finally:
#무조건 마지막에 실행
파이썬에서 기본적으로 포함하고 있는 함수,
ex) print(), type() 같은 것
abs => 절대값
all => 모두 참인지 검사
filter => 함수를 통과하여 참인 것만 돌려줌
len => 길이
list => 리스트로 변환
map => 각 요소가 수행한 결과를 돌려줌
sorted => 정렬
필요할 때 구글링해서 찾아쓰면 된다. 외울필요 X
라이브러리에 있는 것을 가져다 import해서 쓰는 것
beautifulsoup 같은 것
pickle => 데이터 형 그대로 저장해주는 라이브러리
타임, 타임슬립, 랜덤, 웹브라우저 등
한 번 쓱 보고 필요할 때 아 이게 필요하구나 이럴 때 찾아서 쓰면된다.