python 6장. 함수

Hyuna·2024년 7월 21일

Python 기본

목록 보기
6/17
post-thumbnail

오늘은 함수에 대해 알아보자
드디어 def 에 대해 배웠다
너무 어렵다 😖


함수는 왜 쓸까?

  • 코드 양을 줄일 수 있다
  • 반복적으로 쓸 수 있다
  • 안전한 코드 작성이 가능하다
  • 가독성이 증가한다

간단히 말해
함수를 사용하면 중복된 코드를 제거하고
같은 로직을 여러 번 반복할 때 발생할 수 있는 실수를 줄일 수 있다는 것




1. 함수 정의

함수를 정의하기 위해 뭘 고려해야 할까?

  • 이름: 어떤 일을 하는지 유추할 수 있어야한다
  • 입력(매개변수): 어떤 내용을 함수 입력으로 받을지 결정한다
  • 출력(반환값): 결과값이 필요한지(어떤 내용을 반환할지) 판단한다

이를 고려한 함수 정의는 def()로 가능하다

def ()

def 함수이름(매개변수) :
코드블록
return 반환값

  • return은 결과 값 반환과 함수 실행 중단을 의미
    단순작업을 수행할 땐 생략 가능
def add(a, b): #계산할 때 불러오는 함수
sum = a + b
return sum  #출력할 계산식

result = add(2,3)
print(result)

>> 5

📌 return을 사용해야 되는 경우

  • 계산 결과를 반환해야 할 때
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  >> 8
  • 데이터(리스트 등)를 처리하고 그 결과를 반환해야 할 때
def get_even_numbers(numbers):
    even_numbers = [num for num in numbers if num % 2 == 0]
    return even_numbers

result = get_even_numbers([1, 2, 3, 4, 5, 6])
print(result)  >> [2, 4, 6]

**return이 없다면 None 반환**
  • 특정 조건을 만족하는지 여부를 반환해야 할 때
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

result = is_prime(7)
print(result)  
>> True

💡 정수 한개를 매개 변수로 입력받고 윤년인지 판단해보자

>> 연도가 4로 나누어지면서 100으로 나누어지면 윤년 아님
>> 연도가400으로 나누어지면 윤년
def isYear(year):
    return (year % 400 == 0) or ( year % 4 ==0 and year % 100 != 0)
    
print(isYear(2000))
print(isYear(2005))

>> True
>> False


📌 변수 유효 범위

  • 전역변수
    함수 밖에서 만들어진 변수들, 유효 범위는 프로그램 전체
    지역변수 내에서 사용하고 싶다면 global 키워드로 함수 내 선언 필요
  • 지역변수
    함수 내부에서 만들어진 변수들, 함수 내부에서만 사용된다


2. 재귀 호출

  • 함수에서 자기 자신을 다시 부르는 것
  • 재귀호출을 빠져나갈 수 있도록 탈출 조건이 반드시 필요하다

 def factorial(n):
     if n == 0:
         return 1
     else:
     return n * factorial(n-1)
     
 factorial(1)   >> 1
 factprial(10)  >> 10*9*8*7*6*5*4*3*2*1 =3628800 

💡 인자로 정수 한개를 입력받고 1부터 n까지 합을 구해서 반환하는 재귀 호출을 구현해보자

>> 인자로 전달되는 정수는 1 이상
def sumNum(n):
    if n == 1 :
        return 1
    return n + sumNum(n-1)
    
    
print(sumNum(10))  >> 55



💡 1부터 45 사이 (45포함) 숫자 6개를 고르는 로또 번호 생성 프로그램을 작성해보자

import random

def lotto_num():
   lotto_num = random.sample(range(1,46),6)  #sample()로 받는 인자는 시퀀스(리스트,튜플)
   lotto_num.sort()
   return lotto_num

lotto = lotto_num()
print("로또번호: ", lotto)

0개의 댓글