Day11. 파이썬 중급 (2~4)_(2)

Junghwan Park·2023년 4월 18일
0

스터디노트

목록 보기
12/54
post-thumbnail

패키지

  • 패키지
    모듈을 묶어서 관리하자!
    패키지를 이용하면 관련 있는 모듈을 그룹으로 관리할 수 있다.

# CalculatorForInt 패키지의 모듈을 불러오는 부분
from CalculatorForInt import addCal
from CalculatorForInt import subCal
from CalculatorForInt import mulCal
from CalculatorForInt import divCal

print(addCal.add(10, 20))
print(subCal.sub(10, 20))
print(mulCal.mul(10, 20))
print(divCal.div(10, 20))


# CalculatorForFloat 패키지의 모듈을 불러오는 부분
from CalculatorForFloat import addCal
from CalculatorForFloat import subCal
from CalculatorForFloat import mulCal
from CalculatorForFloat import divCal

print(addCal.add(10, 20))
print(subCal.sub(10, 20))
print(mulCal.mul(10, 20))
print(divCal.div(10, 20))

site-packages

  • site-packages
    어디서나 접근 가능한 패키지를 만들자!
    site-package에 있는 모듈은 어디서나 사용할 수 있다.
  • import sys
    sys모듈은 시스템에 대한 간략한 정보를 가지고 있는 모듈
  • sys.path
    sys모듈의 path는 모듈들의 경로를 알려준다
for path in sys.path:
    print(path)

venv ( virtual enviroment ) 가상환경

from calculator import cal
print(f'cal.add(10, 20): {cal.add(10, 20)}')
print(f'cal.sub(10, 20): {cal.sub(10, 20)}')
print(f'cal.mul(10, 20): {cal.mul(10, 20)}')
print(f'cal.div(10, 20): {cal.div(10, 20)}')
  • 실습
    site-packages에 약수와 소수를 리스트로 반환하는 모듈을 만들어보자.

약수와 소수 리스트 반환 모듈 만들어 보기


자주 사용하는 외부 모듈

  • 자주 사용하는 모듈
    수학, 난수, 시간 모듈은 코딩할 때 유용하게 사용된다.
  • 수학 관련 함수

합 (sum)

listVar = [2, 5, 3.14, 58, 10, 2]
print(f'sum(listVar): {sum(listVar)}')

최댓값 (max)

listVar = [2, 5, 3.14, 58, 10, 2]
print(f'max(listVar): {max(listVar)}')

최솟값 (min)

listVar = [2, 5, 3.14, 58, 10, 2]
print(f'max(listVar): {min(listVar)}')

거듭제곱 (pow)

print(f'pow(13, 2): {pow(13, 2)}')  # 13의 2제곱
print(f'pow(13, 3): {pow(13, 3)}')
print(f'pow(13, 4): {pow(13, 4)}')

반올림 (round)

print(f'round(13, 2): {round(3.141592, 1)}')  # 소수점 첫 째 자리까지
print(f'round(13, 2): {round(3.141592, 2)}')  # 소수점 둘 째 자리까지
print(f'round(13, 2): {round(3.141592, 3)}')  # 소수점 셋 째 자리까지
print(f'round(13, 2): {round(3.141592, 4)}')  # 소수점 넷 째 자리까지
print(f'round(13, 2): {round(3.141592, 5)}')  # 소수점 다섯 째 자리까지
  • math 모듈 (수학 관련 모듈)
import math

# 절대값 ( math.fabs() )
print(f'math.fabs(-10): {math.fabs(-10)}')
print(f'math.fabs(-0.12895): {math.fabs(-0.12895)}')

# 올림 ( math.ceil )
print(f'math.ceil(5.21): {math.ceil(5.21)}')
print(f'math.ceil(-5.21): {math.ceil(-5.21)}')

# 내림 ( math.floor )
print(f'math.floor(5.21): {math.floor(5.21)}')
print(f'math.floor(-5.21): {math.floor(-5.21)}')

# 버림 ( math.trunc )
print(f'math.trunc(5.21): {math.trunc(5.21)}')
print(f'math.trunc(-5.21): {math.trunc(-5.21)}')

# 최대공약수( math.gcd )
print(f'math.gcd(14, 21): {math.gcd(14, 21)}')

# 팩토리얼( math.factorial )
print(f'math.factorial(10): {math.factorial(10)}')

# 제곱근( math.sqrt )
print(f'math.sqrt(4): {math.sqrt(4)}')
print(f'math.sqrt(12): {math.sqrt(12)}')
  • 시간과 날짜 관련 모듈
import time

lt = time.localtime()
print(f'time.localtime(): {lt}')        # 현재 시스템의 시간 반환

print(f'lt.tm_year(): {lt.tm_year}')
print(f'time.lt.tm_mon(): {lt.tm_mon}')
print(f'time.lt.tm_mday(): {lt.tm_mday}')
print(f'time.lt.tm_hour(): {lt.tm_hour}')
print(f'time.lt.tm_min(): {lt.tm_min}')
print(f'time.lt.tm_sec(): {lt.tm_sec}')
print(f'time.lt.tm_wday(): {lt.tm_wday}')   # 요일을 나타내면 0부터 시작

객체지향 프로그래밍

  • 객체지향 프로그래밍
    객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.
    객체(object) = 속성(Attribute) + 기능(Function)
  • 예시
    계산기(객체) / 속성: 숫자 / 기능: 덧셈, 뺄셈, 등등
    자동차(객체) / 속성: 색상, 길이, 가격 / 기능: 전진, 후진, 정지 등등
  • 객체 만들기(생성)
    객체는 클래스에서 생성된다.
    자동차(클래스) / 속성: 색상, 길이, 가격 / 기능: 전진, 후진, 정지 등등
    자동차(클래스) → 객체 생성 → 자동차 객체1, 자동차 객체2, 자동차 객체3, 자동차 객체4, 자동차 객체5
  • 객체 사용의 장점
    코드 재사용, 모듈화에 좋다.
  • 예시
    자동차A 배터리 일체형 → 부품 결합도 높음 → 배터리가 소모되면 자동차까지 바꿔야한다!
    자동차B 배터리 교체형 → 부품 결합도 낮음 → 소프트웨어 적으로 가장 이상적! 모듈을 교체하여 사용할 수 있기 때문!
    자동차C 배터리 충전형 → 부품 결합도 높음 → 충전시간이 필요하다!

클래스와 객체 생성

  • 클래스 만들기
    클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
class Car:          # 클래스 선언 (클래스는 첫 글자를 대문자로 한다)
    def __init__(self, color, length):        #속성 선언
        self.color = color
        self.length = length

    def doStop(self):       # 기능 선언
        print('STOP!!')

    def doStart(self):      # 기능 선언
        print('START!!')

    def printCarInfo(self):
        print(f'self.color: {self.color}')
        print(f'self.length: {self.length}')
       
# 객체는 클래스의 생성자를 호출한다.

# 객체 2개 생성
car1 = Car('red', 200)
car2 = Car('blue', 300)

car1.printCarInfo()
car2.printCarInfo()

car1.doStop()
car1.doStart()
  • 실습
    비행기 클래스를 만들고 비행기 객체 5개를 생성해 보자.
class AirPlain:          # 클래스 선언 (클래스는 첫 글자를 대문자로 한다)
    def __init__(self, color, length, weight):        #속성 선언
        self.color = color
        self.length = length
        self.weight = weight

    def doLanding(self):       # 기능 선언
        print('착륙!!')

    def doTakeOff(self):      # 기능 선언
        print('이륙!!')

    def printAirInfo(self):
        print(f'비행기 색상: {self.color}')
        print(f'비행기 길이: {self.length}')
        print(f'비행기 무게: {self.weight}')

# 객체는 클래스의 생성자를 호출한다.

# 객체 2개 생성
airPlain1 = AirPlain('red', 100, 1000)
airPlain2 = AirPlain('green', 200, 1000)
airPlain3 = AirPlain('blue', 300, 1000)
airPlain4 = AirPlain('yellow', 400, 1000)
airPlain5 = AirPlain('white', 500, 1000)


airPlain1.printAirInfo()
airPlain2.printAirInfo()
airPlain3.printAirInfo()
airPlain4.printAirInfo()
airPlain5.printAirInfo()

airPlain1.doTakeOff()

답안 코드와 비교 해보기


객체 속성 변경

  • 객체 속성 변경
    객체 속성은 변경할 수 있다.
    Class는 대략적 완성 후 실행 해보며 완성해 간다.
class NewGenerationPC:

    def __init__(self, name, cpu, memory, ssd):
        self.name = name
        self.cpu = cpu
        self.memory = memory
        self.ssd = ssd

    def doExcel(self):
        print('EXCLE RUN!!')

    def doPhotoshop(self):
        print('PHOTOSHOP RUN!!')

    def printPCInfo(self):
        print(f'self.name : {self.name}')
        print(f'self.cpu : {self.cpu}')
        print(f'self.memory : {self.memory}')
        print(f'self.ssd : {self.ssd}')

myPC = NewGenerationPC('myPc', 'i5', '16G', '256G')
myPC.printPCInfo()

friendPC = NewGenerationPC('friendPC', 'i7', '32G', '512G')
friendPC.printPCInfo()

myPC.cpu = 'i9'     # cpu 변경
myPC.memory = '64G'
myPC.ssd = '1T'
myPC.printPCInfo()
  • 실습
    계산기 클래스를 만들고 사칙연산을 실행해 보자.
class Calculator:

    def __init__(self):
        self.number1 = 0
        self.number2 = 0
        self.result = 0

    def add(self):
        self.result = self.number1 + self.number2
        return self.result

    def sub(self):
        self.result = self.number1 - self.number2
        return self.result

    def mul(self):
        self.result = self.number1 * self.number2
        return self.result

    def div(self):
        self.result = self.number1 / self.number2
        return self.result

Calculator.number1 = 10
Calculator.number2 = 20
Calculator.add()

이 글은 제로베이스 데이터 취업 스쿨의 강의자료 일부를 발췌하여 작성되었습니다.

profile
안녕하세요 반갑습니다^^

0개의 댓글