[멋사] Python 두번째

김지연·2023년 4월 9일
0
post-thumbnail

1. 함수 (function)

함수란?

하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합

함수 사용 이유

1. 반복적인 프로그래밍 피함
2. 모듈화로 인해 전체적인 코드 가독성이 좋음
3. 프로그램에 문제 발생 / 기능의 변경이 필요할 때 유지보수 좋음

def

함수를 사용할 때는 def 라는 키워드 사용
def 는 함수를 만들 때 사용하는 예약어
함수명은 함수를 만드는 사람이 임의로 만들 수 있음

기본 구조

def 함수명 (매개변수(생략가능)) :
  실행문장
  return 반환변수

매개변수?

함수에 입력으로 전달된 값을 받는 변수를 의미.
인수는 함수를 호출할 때 전달하는 입력값을 의미.

def sub(a,b) :
    return a-b

result = sub(a=7, b=3)
print(result)

-> 매개변수를 지정해 사용할 수 있다.
  return은 함수의 결괏값(리턴값)을 돌려주는 명령어


1-1. 일반적인 함수

입력값도 있고 리턴값도 있는 일반적인 함수를 뜻함

def add(a, b) :
	result = a + b
    return result
    
a = add(3, 4)
print(a)

-> add 함수가 2개의 입력값을 받아서 서로 더한 결과값을 리턴한다.

1-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이라고 불리는데, 자바스크립트에서 백틱(`) 을 이용해 문자열 출력하는것과 같은 역할을 한다. 중괄호{} 를 사용해 표현식을 넣으면 된다.


2. 객체지향과 클래스

객체란?

서로 연관된 데이터와 그 데이터를 조작하기 위한 함수를 하나의 집합에 모아놓은 것

-> 객체를 만들려면 객체를 바로 만들지 못하고 항상 클래스(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()

2-1. 클래스 용어 정리

  • 부모 클래스 (Super Class)
    : 모태가 되는 클래스

  • 자식 클래스 (Sub Class. Child Class)
    : 부모로 부터 상속 받은 클래스

  • 생성자 (Constructor)
    : 클래스 인스턴스를 생성

  • __init__()
    : 클래스 생성자 메서드

  • 클래스 변수
    : 클래스에서 공유되는 변수


2-2. 클래스의 상속

클래스의 상속

기존 클래스에 있는 필드와 메서드를 그대로 물려받는 새로운 클래스를 만드는 것

기본구조

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()
profile
천천히 꾸준히 하는 블로그

0개의 댓글