[청년취업사관학교 새싹]핀테커스 수업 2주차(9/6 Day-8)

장민정·2023년 9월 6일
0
post-thumbnail

<수업 내용>

함수

  • 기본 구조
def 함수명 (입력 인수):
	<수행할 문장1>
    <수행할 문장2>
    return (출력 인수)
  • 여러번 반복 되는 기능을 묶어 코드의 양을 줄여준다

  • 입력값X, 출력값 Y가 있는 형태

    • 입력값 혹은 출력값이 없는 형태도 가능

EX)

def sum (a,b):
  return a+b

sum(3,4)

>> 3
  • 매개변수 (인수)
    • 필수 인수 : 위치를 지키며 전달되는 인수
    • 키워드 인수 : 이름을 사용해 전달되는 인수
    • 기본 인수 : 기본으로 사용되는 값

EX)

def say_myself(name, old, man=True):
	print(f'나의 이름은 {name}입니다.')
    print(f'나의 나이는{old}입니다.')
   	if man:
   		print('남자 입니다.')
    else:
    	print('여자 입니다.')
        
say_myself('홍길동', 30)
> 나의 이름은 홍길동입니다.
> 나의 나이는 30입니다.
> 남자 입니다.

say_myself('이영애', 40, False)
> 나의 이름은 이영애입니다.
> 나의 나이는 40입니다.
> 여자 입니다.

전역변수 vs 지역변수

  • 전역 변수 : 함수 외부에서 선언된 변수. 프로그램 전체에서 사용가능
  • 지역 변수 : 함수 내부에서 선언된 변수. 해당 함수 내부에서만 사용가능

EX)

def test():
	local_var =20
    
test()

print(local_var)
> error 발생

* local_var가 지역변수이기 때문에 함수를 선언한다고 하더라도 외부에서는 호출되지 않는다.


def test2():
	global local_var
	local_var =20

test2()

print(local_var)
>20
  • 연습문제
    입력하는 모든 수의 평균을 계산하는 함수만들기
def mean(*args):
	sum_arg=0
	for arg in args:
    	sum_arg+=arg
        
    mean_arg=sum_arg/len(args)
    return mean_arg
	
  • 연습문제
    두 수를 입력받아 사칙연산을 하는 함수 만들기
def calculate(a,b):
  sum_=a+b
  subtract=a-b
  multiply=a*b
  devide=a/b
  return sum_,subtract,multiply,devide

클래스

  • 객체를 만들기 위한 설계 도면. 속성을 정의할 수 있다
  • 인스턴스 : 클래스의 실체화된 객체를 의미. 클래스의 정의에 따라 속성을 가지고 있고, 클래스에서 정의된 메서드를 호출하여 동작할 수 있다
  • 속성 : 객체가 가지는 특징이나 상태. 변수로 표현된다.
  • 메서드 : 클래스 내부에 정의된 함수
  • self : 인스턴스 자체를 의미

EX)

class Person:
	def __init__(self, name, age, gender):
    	self.name=name
        self.age=age
        selg.gender=gender
    
    def walk(self):
    	print(self.name +"is walking.")
        

# Person 클래스의 인스턴스 생성
alice=Person("Alice", 25, "Female")
bob=Person("Bob", 30, "Male")

# 인스턴스의 속성 접근
print(alice.name)
> Alice
print(bob.age)
>30

# 인스턴스의 메서드 호출
alice.walk()
> Alice is walking.
bob.walk()
> Bob is walking.
  • 클래스 만들기
# step 1: 클래스 객체 선언하기
class Fourcal:
	pass

a=FourCal()

# step 2: 메서드 선언하기
class Fourcal:
	def setdata(self, num1, num2):
    	self.num1=num1
        self.num2=num2
        
    def add(self):
    	return self.num1+self.num2
    
# step 3: 인스턴스 선언하기

a=FourCal()
a.setdata(4,2)
print(a.add())

> 6
     
  • 생성자 활용 예시
    - 클래스를 만듦과 동시에 자동으로 속성을 부여 할 수 있다
class FourCal:
	def __init__(self, num1, num2):
    	self.num1=num1
    	self.num2=num2
    
    def add(self):
    	return self.num1+self.num2
    
    def subtract(self):
    	return self.num1-self.num2
    
    def multiply(self):
    	return self.num1*self.num2
        
    def devide(self):
    	return self.num1/self.num2
        
calculator=FourCal(10,5)

result=calculator.add()
print(result)

> 15

result=calculator.subtract()
print(result)

> 5

result=calculator.multiply()
print(result)

> 50

result=calculator.devide()
print(result)

> 2.0

실습

  1. 생성자 메서드로, 계좌 번호, 예금주 이름, 초기 잔액을 받아 계좌를 생성합니다.
  2. 입금, 출금, 현재 계좌의 잔액을 반환하는 메서드를 생성합니다.
class Account:
  def __init__(self, account_number, name, init_balance):
    self.account_number=account_number
    self.name=name
    self.init_balance=init_balance

  def deposit(self, deposit_amount):
    self.balance+=deposit_amount
    return print(f"{self.name}의 계좌{self.account_number}의 입금 후 잔액은 {self.balance}원 입니다.")

  def withdraw(self, withdraw_amount):
    self.balance-=withdraw_amount
    return print(f"{self.name}의 계좌{self.account_number}의 출금 후 잔액은 {self.balance}원 입니다.")

  def present_balance(self):
  	print(f"{self.name}의 계좌{self.account_number}의 현재 잔액은 {self.balance}원 입니다.")

my_bank=Account("123456789", Laura, 500)

my_bank.deposit(300)
> Laura의 계좌 123456789의 입금 후 잔액은 800원 입니다.

my_bank.withdraw(100)
> Laura의 계좌 123456789의 입금 후 잔액은 700원 입니다.

my_bank.present_balance()
> Laura의 계좌 123456789의 현재 잔액은 700원 입니다.

상속

  • 부모 클래스의 내용(속성, 메서드)을 물려받는 자식 클래스가 갖게 되는 것
class MoreFourCal(FourCal):
	pass

a=MoreFourCal(4,2)
a.add()

> 6

# MoreFourCal 클래스는 add 메서드와 속성을 정의하지 않았지만 FourCal를 상속받아 사용할 수 있다.

오버라이딩

  • 클래스 상속 시 부모 클래스에서 정의한 메서드(함수)를 자식 클래스에서 변경하는 것
class SafeFourCal(FourCal):
	def divide(self):
      if self.num2==0:
          print("0으로 나눌 수 없습니다.")
      else: 
          return self.num1/self.num2

# 이전 FourCal 클래스에서는 0으로 나눈 경우 에러가 발생했는데 SafeFourCal클래스에서 devide메서드를 오버라이딩 하여 에러가 발생하지 않도록 수정하였다.

모듈과 패키지

  • 모듈 : 파이썬 코드를 담고 있는 파일. 함수, 클래스, 변수 등을 정의하고 다른 파이썬 프로그램에서 재사용할 수 있도록 한다. .py확장자를 가진 파일로 저장되며, 다른 모듈이나 프로그램에서 import하여 불러올 수있다.
  • 패키지 : 서로 관련된 모듈들을 디렉토리 구조로 묶어놓은 것. 패키지는 모듈의 계층적인 구조를 형성하여 코드를 구성하고 관리하는데 도움을 준다. 패키지는 폴도로 표현되며, 폴더 안에는 __init__.py 파일이 있어야 하며 이 파일은 해당 폴더를 패키지로 인식하게 한다.
    • 파이썬 3.3버전 이후로는 꼭__init__.py 파일이 필요하지 않음, 빈 디렉토리에도 패키지를 만들 수 있음

0개의 댓글