함수란?
하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합함수 사용 이유
1. 반복적인 프로그래밍 피함
2. 모듈화로 인해 전체적인 코드 가독성이 좋음
3. 프로그램에 문제 발생 / 기능의 변경이 필요할 때 유지보수 좋음
def
함수를 사용할 때는def
라는 키워드 사용
def
는 함수를 만들 때 사용하는 예약어
함수명은 함수를 만드는 사람이 임의로 만들 수 있음기본 구조
def 함수명 (매개변수(생략가능)) :
실행문장
return 반환변수매개변수?
함수에 입력으로 전달된 값을 받는 변수를 의미.
인수는 함수를 호출할 때 전달하는 입력값을 의미.
def sub(a,b) :
return a-b
result = sub(a=7, b=3)
print(result)
-> 매개변수를 지정해 사용할 수 있다.
return은 함수의 결괏값(리턴값)을 돌려주는 명령어
입력값도 있고 리턴값도 있는 일반적인 함수를 뜻함
def add(a, b) :
result = a + b
return result
a = add(3, 4)
print(a)
-> add 함수가 2개의 입력값을 받아서 서로 더한 결과값을 리턴한다.
def say() :
return 'hi'
a= say()
print(a)
-> say() 함수처럼 괄호 안에 아무 값도 넣지 않아야 한다.
호출시 바로 'hi'라는 문자열을 리턴한다.
예시 문제
풀이def what_time(hh, mm, ss) : print(f'{hh}시 {mm}분 {ss}초') what_time(20,11,30) what_time(1,15,25)
-> 여기서 f는 f-string이라고 불리는데, 자바스크립트에서
백틱(`)
을 이용해 문자열 출력하는것과 같은 역할을 한다.중괄호{}
를 사용해 표현식을 넣으면 된다.
객체란?
서로 연관된 데이터와 그 데이터를 조작하기 위한 함수를 하나의 집합에 모아놓은 것
-> 객체를 만들려면 객체를 바로 만들지 못하고 항상 클래스(class)라는 것을 만든 후에 그 클래스를 이용하여 객체를 만들어야 한다.
생성자란?
일반적으로 함수는 사용자가함수이름()
과 같은 형태로 호출해야 코드가 수행된다.
이와 달리 클래스 내에서 특별한 이름(__init__
)을 갖기만 하면
객체가 생성될 때 자동으로 호출되는 함수가 있는 이를생성자
라고 함기본구조
class 클래스명 : def __init__(self) : ....
예시 문제
풀이class Animal : def __init__(self, name, age): self.name = name self.age = age def say(self): print(f'나는 {self.name} {self.age}살임' cat = Animal('고양이',3) dog = Animal('강아지', 4) cat.say() dog.say()
부모 클래스 (Super Class)
: 모태가 되는 클래스
자식 클래스 (Sub Class. Child Class)
: 부모로 부터 상속 받은 클래스
생성자 (Constructor)
: 클래스 인스턴스를 생성
__init__()
: 클래스 생성자 메서드
클래스 변수
: 클래스에서 공유되는 변수
클래스의 상속
기존 클래스에 있는 필드와 메서드를 그대로 물려받는 새로운 클래스를 만드는 것기본구조
class 클래스 이름(상속할 클래스 이름) : ...
-> 상속을 하는 이유?
: 보통 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다.
하지만 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황이라면 상속을 사용해야 한다.
예시 문제
풀이class 농구 : def basket(self): print("농구 재밌다") class 축구 : def soccer(self): print("축구 신난다") class 소감(농구, 축구) : def feel(self): print("우리는 스포츠") def main() : s = 소감() s.basket() s.soccer() s.feel() main()