본문 바로가기
Data & Programming/Python

[Python] 파이썬 함수와 클래스: 모듈화와 객체지향 프로그래밍의 핵심

by 눈부셔™ 2023. 9. 18.
728x90

[Python] 파이썬 함수와 클래스: 모듈화와 객체지향 프로그래밍의 핵심

이번 포스트에서는 파이썬의 함수와 클래스에 대해 다뤄 보겠습니다.

함수는 프로그램 내에서 코드의 재사용과 모듈화를 가능하게 하며, 클래스는 객체지향 프로그래밍의 핵심입니다.

이를 통해 더 효율적이고 유지보수가 용이한 코드를 작성할 수 있습니다.

파이썬 함수와 클래스: 모듈화와 객체지향

함수: 코드의 재사용과 모듈화

함수는 프로그램 내에서 특정 작업을 수행하는 코드 블록을 정의하고 호출하는 데 사용됩니다. 

함수를 사용하면 코드를 모듈화하여 유지보수가 쉬워지고, 코드의 재사용성을 높일 수 있습니다.

 

■ 함수의 정의와 호출
함수를 정의하려면 def 키워드를 사용하고, 호출하려면 함수 이름과 필요한 인자(매개변수)를 전달합니다.

1
2
3
4
5
def greet(name):
    return f"안녕하세요, {name}!"
 
message = greet("눈부셔")
print(message)  # 출력: "안녕하세요, 눈부셔!"

 

■ 함수의 매개변수와 반환값
함수는 입력을 받기 위해 매개변수를 사용하며, 결과를 반환하기 위해 return 문을 사용합니다. 

함수 내부에서 계산된 결과를 호출자에게 반환합니다.

1
2
3
4
5
def add(x, y):
    return x + y
 
result = add(35)
print(result)  # 출력: 8

 

■ 내장 함수와 라이브러리 모듈
파이썬은 많은 내장 함수를 제공하며, 라이브러리 모듈을 통해 다양한 기능을 확장할 수 있습니다. 예를 들어, print(), len(), math 모듈 등이 있습니다.

1
2
3
import math
 
print(math.sqrt(25))  # 출력: 5.0

 

 

 

 

클래스와 객체 지향 프로그래밍

클래스는 객체 지향 프로그래밍의 핵심 개념 중 하나로, 데이터와 함수를 하나의 단위로 캡슐화합니다. 

클래스를 사용하면 현실 세계의 개념을 모델링하고 객체를 생성하여 사용할 수 있습니다.

■ 클래스의 정의와 객체 생성
클래스를 정의하고 객체를 생성하는 방법은 다음과 같습니다.

1
2
3
4
5
6
7
8
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
person1 = Person("Alice"30)
print(person1.name)  # 출력: "Alice"
print(person1.age)   # 출력: 30

 

■ 클래스의 속성과 메서드
클래스는 속성(멤버 변수)과 메서드(멤버 함수)를 포함합니다. 

속성은 객체의 상태를 나타내며, 메서드는 객체의 동작을 정의합니다.

1
2
3
4
5
6
7
8
9
class Circle:
    def __init__(self, radius):
        self.radius = radius
 
    def area(self):
        return 3.14159 * self.radius ** 2
 
circle = Circle(5)
print(circle.area())  # 출력: 78.53975

 

■ 클래스 상속과 다형성
클래스는 다른 클래스를 상속받아 새로운 클래스를 정의할 수 있습니다. 이를 통해 코드 재사용성을 높이고 다형성을 구현할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Animal:
    def speak(self):
        pass
 
class Dog(Animal):
    def speak(self):
        return "멍멍!"
 
class Cat(Animal):
    def speak(self):
        return "야옹!"
 
dog = Dog()
cat = Cat()
 
print(dog.speak())  # 출력: "멍멍!"
print(cat.speak())  # 출력: "야옹!"

 

반응형

 

(연습문제) 파이썬 함수

1. 리스트에 있는 숫자 중에서 최대값을 찾는 함수 find_max(numbers)를 작성하세요.

1
2
3
4
5
6
7
8
9
10
11
12
def find_max(numbers):
    if len(numbers) == 0:
        return None
    max_num = numbers[0]
    for num in numbers:
        if num > max_num:
            max_num = num
    return max_num
 
# 테스트
numbers = [37285]
print(find_max(numbers))  # 출력: 8

 

2. 주어진 숫자의 팩토리얼을 계산하는 함수 factorial(n)를 작성하세요

1
2
3
4
5
6
7
8
9
10
def factorial(n):
    if n == 0:
        return 1
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result
 
# 테스트
print(factorial(5))  # 출력: 120

 

 

 

(연습문제) 파이썬 클래스

1. 사각형을 나타내는 Rectangle 클래스를 정의하세요. 

이 클래스는 너비와 높이를 인스턴스 변수로 가지며, 넓이를 계산하는 get_area() 메서드를 포함해야 합니다.

1
2
3
4
5
6
7
8
9
10
11
class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height
 
    def get_area(self):
        return self.width * self.height
 
# 테스트
rectangle = Rectangle(45)
print(rectangle.get_area())  # 출력: 20

 

2. 도서 정보를 관리하는 Book 클래스를 정의하세요. 이 클래스는 제목, 저자, 출판연도를 인스턴스 변수로 가지며, 도서 정보를 문자열로 반환하는 get_info() 메서드를 포함해야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
class Book:
    def __init__(self, title, author, year):
        self.title = title
        self.author = author
        self.year = year
 
    def get_info(self):
        return f"{self.title} (저자: {self.author}, 출판연도: {self.year})"
 
# 테스트
book1 = Book("파이썬 프로그래밍""Guido van Rossum"1991)
print(book1.get_info())  # 출력: "파이썬 프로그래밍 (저자: Guido van Rossum, 출판연도: 1991)"

 

 

 

#파이썬  #프로그래밍  #코딩   #파이썬 함수  #파이썬 클래스  #데이터분석  #객체지향 프로그래밍  #파이썬 모듈화

728x90