Module, Class

Shin Woohyun·2021년 7월 20일
0

모듈 Module

모듈은 파이썬 정의와 문장들을 담고 있는 파일입니다. 파일의 이름은 모듈 이름에 확장자 .py 를 붙입니다. 모듈 내에서, 모듈의 이름은 전역 변수 name 으로 제공됩니다.
https://docs.python.org/ko/3/tutorial/modules.html

functions.py에 있는 square()함수를 가져와서 쓰고 싶다면
functions module에서 square를 import 해와야 한다.

from functions import square
for i in range(10):
	print(f"The square of {i} is {square(i)}")
from functions
for i in range(10):
	print(f"The square of {i} is {functions.square(i)}")

OOP(Object-Oriented Programming)

  • 객체지향 프로그래밍. 프로그램 설계방법론이자 개념의 일종으로 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다.
    특징 : Encapsulation, Information Hiding, Inheritance, Polymorphism
    (vs 관련 검색어 : 함수형 프로그래밍)
    https://namu.wiki/w/%EA%B0%9D%EC%B2%B4%20%EC%A7%80%ED%96%A5%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
class Flight():
    def __init__(self, capacity):
        self.capacity = capacity
        self.passengers = []
    
    def add_passenger(self, name):
        if not self.open_seats():
            return False
        self.passengers.append(name)
        return True

    def open_seats(self):
        return self.capacity - len(self.passengers)
    
flight = Flight(3)

people = ["Harry", "Ron", "Hermione", "Ginny"]
for person in people:
    success = flight.add_passenger(person)
    if success:
        print(f"Added {person} to flight successfully.")
    else:
        print(f"No available seats for {person}")


Funtional Programming

  1. decorator
def announce(f):
    def wrapper():
        print("About to run the function...")
        f()
        print("Done with the function")
    return wrapper

@announce
def hello():
    print("Hello, world!")

hello()

  1. ㅇㅁㅇ
people = [
    {"name": "Harry", "house": "Gryffindor"},
    {"name": "Cho", "house": "Ravenclaw"},
    {"name": "Draco", "house": "Slytherin"}
]

def f(person):
    return person["name"]

people.sort(key=f)

print(people)
  • lambda 함수를 간략하게
people = [
    {"name": "Harry", "house": "Gryffindor"},
    {"name": "Cho", "house": "Ravenclaw"},
    {"name": "Draco", "house": "Slytherin"}
]

people.sort(key=lambda person: person["name"])

print(people)


exceptions

try, except error를 사용해서 오류를 명료하게 보여줄 수 있다.
1. 나누는 숫자가 0이면 ZeroDivisionError를 0으로 나눌 수 없다고 보여주고,
2. input이 숫자가 아니라면 Invalid input값임를 보여준다.

import sys

try:
    x = int(input("x: "))
    y = int(input("y: "))
except ValueError:
    print("Error: Invalid input.")
    sys.exit(1)

try:
    result = x / y
except ZeroDivisionError:
    print("Error: Cannot divide by 0.")
    sys.exit(1)

print(f"{x} / {y} = {result}")

https://youtu.be/EOLPQdVj5Ac

0개의 댓글