본문 바로가기
Python

파이썬 함수(Python Function)

by wanttosleep1111 2023. 1. 10.

파이썬 함수(Python Function)

 

1. 함수

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

자바의 메소드와 비슷

 

※ 함수를 써야하는 이유

  • 반복적 프로그래밍을 피할 수 있다.
  • 모듈화로 인해 전체적인 코드의 가독성이 좋아진다.
  • 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때, 손쉽게 유지보수 가능하다.

 


 

2. 함수 정의하기

▶ 예제 : 두 수를 입력 받아서 뺀 결과를 돌려주는 함수 정의하기 (무조건 큰 수에서 작은 수 빼기)

def number_minus(num1, num2) :
    if num1 > num2 :
        result = num1 - num2
    else :
        result = num2 - num1
    return result
num1 = int(input('첫 번째 정수 입력 >> '))
num2 = int(input('두 번째 정수 입력 >> '))

number_minus(num1, num2)

 


 

3. 함수 기본 구조 4가지

매개변수 유무, return 유무에 따라 4가지

 

① 매개변수 X, return X

# 1. 매개변수 X, return X
def hi () :
    print('안녕하세요~~') # 출력 확인용

# 함수 호출(실행)    
hi()
result = hi() 
# return 값이 없을 경우 null이 반환되기 때문에 결과를 출력해 보면 None이 출력
print(result)
# return 값이 없으면 대입을 하지 않음

 

② 매개변수 O, return X

# 2. 매개변수 O, return X
def hi2 (name) :
    print(f'{name}씨 안녕~~')

# 함수 호출 (실행)
hi2('재석')

 

③ 매개변수 X, return O

# 3. 매개변수 X, return O
def hi3 () :
    return '안녕~'

# 함수 호출 (실행)
hi3()
result = hi3()
print(result)

 

④ 매개변수 O, return O

# 4. 매개변수 O, return O
def hi4 (name) :
    return f'{name}씨 안녕~~'

# 함수 호출 (실행)
hi4('재석')
result = hi4('재석')
print(result)

 

※ return 키워드

  • 반환값은 언제나 하나 (packing되어 반환)
  • 함수 안에서 return은 1번 실행한다.
  • 함수 안에서 return을 만나면 함수가 끝난다.

 

▶ 예제

문자열 'ㅋ를 모두 지워주세요ㅋㅋㅋ'에서 ㅋ을 모두 지우는 함수 정의하기

def s_replace (s) :
    return s.replace('ㅋ', '')
s = input('문자열 입력 >> ')

result = s_replace(s)
result

 

▶ 예제

숫자 1개를 입력 받아서 약수를 출력하는 함수 정의하기 

def divisor (num) :
    lst1 = []
    for i in range(1, num+1):
        if num%i == 0 :
            lst1.append(i)
    return lst1
divisor(30)

 


 

4. 함수 독스트링(Doc String)

  • 함수의 기능 설명 작성
  • 정의된 함수 내에서 Shift + Tab을 누르면 설명 확인 가능
  • 함수 내부 첫 줄에 개행을 포함한 긴 줄 문자열기호(""" """)로 작성
def add_sub(n1, n2):
    """덧셈, 뺄셈을 수행하는 함수
    ni : int
    n2 : int
    """
    return n1+n2, n1-n2

 


 

5. 함수 매개변수

 

① 기본값 설정(default parameters)

def power_of_N (num, power=2) :
    return num**power
power_of_N()
print(power_of_N(2))
print(power_of_N(3,3))
print(power_of_N(5,power=2))

 

② 가변 매개변수 (variable parameters)

  • * 사용
  • 함수 호출 시, 몇 개의 인자를 받을지 모를 때 사용자가 인자를 결정
  • 전달된 모든 인수는 튜플(tuple)의 형태로 저장
def add (*args) :
    print(args)
add(1,2,3)

add(1,2,3,4,5,6,7,8)

 

▶ 예제

가변 매개변수를 활용해 모든 숫자를 더해서 반환하는 함수를 작성, sum() 함수 사용

def add (*args) :
    return sum(args)

print(add(1,2,3,4,5))

 

  • ** 사용 : 함수 내의 값을 딕셔너리 형태로 처리

※ kwargs : keyword arguments

def print_map (**kwargs) :
    print(kwargs)
    for key, value in kwargs.items():
        print(key, '/', value)
print_map(하나=1, 둘=2, 셋=3)

 


 

6. 네임스페이스 (namespace)

  • 프로그래밍 언어에서 특정 객체(object)를 이름에 따라 구분할 수 있는 범위
  • 빌트인 네임스페이스, 전역 네임스페이스, 지역 네임스페이스
x = 1 # 전역 변수 x
print('전역 변수 함수 밖 : ',x)

def temp () :
    x = 100 # temp의 지역 변수 x
    print('지역 변수 함수 안 : ',x)
temp()

 

# global 키워드 -> 어디에 있든 전역 변수로 사용

x = 1 # 전역 변수 x
print('전역 변수 함수 밖 : ',x)

def temp () :
    global x
    x =100 # temp의 지역 변수 x
    print('지역 변수 함수 안 : ',x)
temp()
print('전역 변수 함수 밖 : ',x)

 


 

7. 모듈

  • 변수나 함수 또는 클래스를 모아 놓은 파일
  • 다른 파이썬 프로그램에서 불러와 사용할 수 있도록 만든 파이썬 파일
  • 모듈은 다른 사람이 이미 만들어 놓은 모듈을 사용할 수도 있고, 직접 만들어 사용할 수 있음
  • 파이썬에서 사용할 수 있는 모듈은 확장자가 .py
  • 모듈의 의미는 구성 단위, 라이브러리는 도서관이라는 뜻
  • 개발에 한해서 모듈과 라이브러리는 동일한 의미라고 생각해도 무방

 

  • import 모듈이름 → 모듈을 불러와서 사용
  • from 모듈이름 import 함수(or 클래스) → 모듈에 있는 함수 기능 사용

댓글