패키지란? => 간단히 말해, 여러 모듈들을 용도, 타입 등 관련 있는 카테고리로 묶어놓은 것. => 같은 이름의 모듈을 구별하는 용도로도 사용한다.
# 각각 cal_for_int, cal_for_float라는 패키지에 add라는 모듈을 만들었다.# 모듈 이름과 쓰임새는 같으나 적용 대상이 다르다(int와 float)# 이렇게, 같은 이름의 모듈을 구별해줄 때에 사용할 수 있다.# inputfrom cal_for_int import addprint(add.add(1.2,2))
from cal_for_float import addprint(add.add(1.2, 2))
==============================
# output33.2
패키지를 어떤 경로에서든 사용할 수 있게 하는 것이 site-pakages라는 디렉토리다. => 해당 디렉토리에 패키지를 두면 어디서든 사용 가능하다.
자주 쓰는 외부 모듈
math모듈 fabs(x): x의 절대값(실수) //ceil(x): x 올림 //floor(x): x 내림 trunc(x): x 소수점 이하 버림 //gcd(x, y): x와 y의 최대공약수 factorial(x): x의 팩토리얼
time 모듈 localtime(): 시스템에 표시되는 현재 시각 반환
객체 지향 프로그래밍/클래스와 객체 생성/객체 속성 변경
객체지향 프로그래밍 : 객체를 이용한 프로그래밍. 1) 객체Object = 속성Attribute(변경 가능) + 기능Function 2) 객체는 클래스Class(속성과 기능을 정의함)에서 생성된다. 3) 장점 : 코드 재활용 및 모듈화가 편하다
클래스 생성 1) class를 만든다(class 키워드와 속성, 기능을 이용해서 만듦). 2) class의 생성자를 호출해서 객체를 만든다.
# inputclasscar: # 'car'라는 이름의 class 만들기def__init__(self, col, len): # 속성 정의함.self.color=col
self.length=len
defstop(self): # 기능 정의함
print('stop')
defstart(self): # 기능 정의함
print('start')
car1 = car('red', 200) # 'car'라는 class로부터 'car1'이라는 객체 생성.
print(car1.color) # car1 객체의 color속성 출력
print(car1.length) # car1 객체의 length속성 출력
car1.stop() # car1 객체의 stop 기능 사용
car1.start() # car1 객체의 start 기능 사용
====================================================
# output
red
200
stop
start
객체와 메모리. => class로부터객체가 생성되면 메모리에 저장되고 => 변수에 객체를 할당하면,객체 데이터가 아닌 객체의 메모리 주소가 할당된다. =>변수는이 주소를 이용해서메모리로부터 객체를 참조하여 동작하는 것. => 이런 특성으로 인해 reference(참조) 변수 라고도 부름.
클래스 상속
클래스는 또 다른 클래스를 상속해서 사용할 수 있다.
# 예시# inputclassnormal_car:# normal_car라는 class 생성defdrive(self):print('my car drive() called.')
defback(self):print('my car back() called.')
classturbo_car(normal_car):# normal_car class를 상속하는 turbo_car class 생성.defturbo(self):print('my car turbo() called.')
car1 = turbo_car()
car1.drive()
car1.back()
car1.turbo()
========================================================
# output
my car drive() called. # normal_car class를 상속한 덕분에
my car back() called. # turbo_car class에 정의하지 않은 기능도 사용 가능하다.
my car turbo() called.